HOME > 即効テクニック > AccessVBA > データベース・データ保護 > Accessオブジェクトを使用してオブジェクトを列挙する

即効テクニック

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

Accessオブジェクトを使用してオブジェクトを列挙する

(Access)
●概要●
Access2000では新しいオブジェクトとしてAccessObjectが追加されました。
このオブジェクトを使用して、テーブルやフォームなどカレントMDBに存在するオブジェクトを列挙する方法を説明します。

●準備●
標準モジュールに以下のプロシージャを記述して下さい。

●サンプルコード●
Private Sub AccessObjectTest()

    Dim obj As AccessObject

    'DataAccessPageを列挙
    For Each obj In CurrentProject.AllDataAccessPages
          Debug.Print obj.Name
    Next

    'フォームを列挙
    For Each obj In CurrentProject.AllForms
        Debug.Print obj.Name
    Next

    'マクロを列挙
    For Each obj In CurrentProject.AllMacros
        Debug.Print obj.Name
    Next

    'モジュールを列挙
    For Each obj In CurrentProject.AllModules
        Debug.Print obj.Name
    Next

    'レポートを列挙
    For Each obj In CurrentProject.AllReports
        Debug.Print obj.Name
    Next

    'テーブルの列挙
    For Each obj In CurrentData.AllTables
        Debug.Print obj.Name
    Next

    'クエリの列挙
    For Each obj In CurrentData.AllQueries
        Debug.Print obj.Name
    Next

End Sub

●動作確認●
上記AccessObjectTestプロシージャを実行して下さい。その際にイミディエイトウィンドウにカレントMDBのオブジェクトが全て列挙されていることを確認して下さい。

●詳細●
Access2000ではMDBに保存された各オブジェクトへのアクセスの為に、最上位オブジェクトであるApplicationオブジェクトの直下にCurrentProject、CuurentDataというAccessオブジェクトが用意されました。
CurrentProjectは、ほぼAccess97のCurrentDbと同じように捉えられるオブジェクトで、カレントMDBにあるAccess独自のオブジェクトを全て保持しています。
CurrentDataは、テーブルやクエリなど、データ定義に関するオブジェクトを保持しているものです。
サンプルではそれぞれのコレクションをFor Each...Next構文でループ処理して、保存済みのオブジェクトを全て列挙しています。

また、AccessObjectは保存済みのオブジェクトにを参照する機能のみを提供し、コレクションから特定のオブジェクトを削除・追加したり、対応するオブジェクトのデータに直接アクセスすることは出来ませんので、注意してください。