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