カレントデータベース内にある各テーブルとフィールドを探索し、フィールド名に特定の文字列を含むテーブルとそのフィールド名を収集します。
- まず「Database」オブジェクトの変数である「dbs」に”カレントデータベース”をセットします。
- そのデータベース内にあるすべてのテーブルのコレクションである「TableDefs」の中から、For Each~Nextステートメントでひとつずつテーブル情報を取り出し、「TableDef」オブジェクトの変数「tdf」にセットしていきます。
- TableDefsコレクションにはシステムテーブルや隠しテーブルも含まれているので、「Attributes」プロパティの値からテーブル属性を判断し、If文でそれらを除外します。
- テーブル内にあるすべてのフィールドのコレクションである「Fields」の中から、For Each~Nextステートメントでひとつずつフィールド情報を取り出し、「Field」オブジェクトの変数「fld」にセットしていきます。
- フィールド名である「Name」プロパティに特定の文字列(ここでは”コード”)が含まれているかどうかを検査します。
- 指定文字列を含んでいたら、そのテーブル名とフィールド名(それぞれのオブジェクトの「Name」プロパティの値)をイミディエイトウィンドウに出力します。
Sub Sample_1_05()
'特定のフィールド名を使っているテーブルを収集する
Dim dbs As Database
Dim tdf As TableDef
Dim fld As Field
Dim strFind As String
strFind = "コード"
Set dbs = CurrentDb
For Each tdf In dbs.TableDefs
With tdf
If ((.Attributes And dbSystemObject) Or _
(.Attributes And dbHiddenObject)) = 0 Then
For Each fld In tdf.Fields
If InStr(fld.Name, strFind) > 0 Then
Debug.Print .Name, fld.Name
End If
Next fld
End If
End With
Next tdf
End Sub
実行例:
|