Accessのフォーム/レポートにあるラベルの内容を一括でテキストに出力するモジュールです。
ラベルで表示してる項目名変えるんだけどどこに何があるか調べきれない、とか、そんなときに使えます。
出力されるテキストファイルはAccessのファイルを同じ場所に作られます。同じファイル名がある時は追記します。
お約束ですが、使用前に念の為バックアップを取ってください。このコードを使用して発生した諸々の事態には責任が持てませんので自己責任でお使いください。
フォームのラベルを一括出力
Sub form_label_caption_out()
On Error Resume Next
Dim frm As AccessObject
Dim ctl As Control
'ファイル出力用
Dim FSO
Dim LOG
Set FSO = CreateObject("Scripting.FileSystemObject")
'ファイルがなければ新規作成
If FSO.FileExists(CurrentProject.Path & "\formlabel.txt") = False Then
FSO.CreateTextFile CurrentProject.Path & "\formlabel.txt"
End If
Set LOG = FSO.OpenTextFile(CurrentProject.Path & "\formlabel.txt", 8)
'全てのフォームで繰り返す
For Each frm In Application.CurrentProject.AllForms
'フォームをデザインビューで開く
DoCmd.OpenForm frm.Name, acDesign, , , , acHidden
For Each ctl In Forms(frm.Name).Controls
If ctl.ControlType = acLabel Then
'書き込み
LOG.WriteLine frm.Name & Chr(9) & ctl.Name & Chr(9) & ctl.Caption
End If
Next ctl
'フォームを閉じる
DoCmd.Close acForm, frm.Name, acSaveNo
Next frm
Set FSO = Nothing
Set LOG = Nothing
End Sub
レポートのラベルを一括出力
Sub report_label_caption_out()
On Error Resume Next
Dim rep As AccessObject
Dim ctl As Control
'ファイル出力用
Dim FSO
Dim LOG
Set FSO = CreateObject("Scripting.FileSystemObject")
'ファイルがなければ新規作成
If FSO.FileExists(CurrentProject.Path & "\reportlabel.txt") = False Then
FSO.CreateTextFile CurrentProject.Path & "\reportlabel.txt"
End If
Set LOG = FSO.OpenTextFile(CurrentProject.Path & "\reportlabel.txt", 8)
'全てのレポートで繰り返す
For Each rep In Application.CurrentProject.AllReports
'レポートをデザインビューで開く
DoCmd.OpenReport rep.Name, acDesign, , , , acHidden
For Each ctl In Reports(rep.Name).Controls
If ctl.ControlType = acLabel Then
'書き込み
LOG.WriteLine rep.Name & Chr(9) & ctl.Name & Chr(9) & ctl.Caption
End If
Next ctl
'レポートを閉じる
DoCmd.Close acReport, rep.Name, acSaveNo
Next rep
Set FSO = Nothing
Set LOG = Nothing
End Sub