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

Access2000



戻る


Excel Word Access VBA! モーグ