HOME > 即効テクニック > AccessVBA > データベース・データ保護 > データベースのすべてのテーブル名とクエリ名を取得する

即効テクニック

データベース・データ保護

データベースのすべてのテーブル名とクエリ名を取得する

(Access 97)
データベースにあるテーブルの名前を取得するには、TableDefオブジェクトのNameプロパティを使います。
サンプルでは、カレントデータベースのすべてのテーブル名をイミディエイトウィンドウに出力しています。

Sub Sample1()
    Dim mymydb  As Database
    
    Set mydb = CurrentDb
    
    Debug.Print "すべてのテーブル名を出力します"
    For Each mytbl In mydb.TableDefs
        Debug.Print mytbl.Name
    Next
End Sub

住所録テーブルと商品管理テーブルが存在するとしたら、イミディエイトウィンドウには次のように出力されます。

すべてのテーブル名を出力します
MSysAccessObjects
MSysACEs
MSysObjects
MSysQueries
MSysRelationships
住所録
商品管理

最初の6個はシステムオブジェクトです。システムオブジェクトは出力しないようにするためには、次のように記述します。

Sub Sample2()
    Dim mymydb  As Database
    
    Set mydb = CurrentDb
    
    Debug.Print "すべてのテーブル名を出力します"
    For Each mytbl In mydb.TableDefs
        If Left(mytbl.Name, 4) <> "MSys" Then
            Debug.Print mytbl.Name
        End If
    Next
End Sub

クエリ名を取得する場合は、QueryDefオブジェクトのNameプロパティを使います。

Sub Sample()
    Dim mymydb  As Database
    
    Set mydb = CurrentDb
    
    Debug.Print "すべてのクエリ名を出力します"
    For Each myqer In mydb.QueryDefs
        Debug.Print myqer.Name
    Next
End Sub