このホームページでは、Access Study のページなどで、データベースにあるテーブルやフォームの一覧をVBAを使って取得する方法を紹介しています。しかし、VBAを使わずにそれらのオブジェクト一覧を取り出す方法もあります。
それは、"システムテーブル"である「MSysObjects」を使う方法です(もしかしたら危ない方法かもしれません)。
このテーブルにはデータベース内のさまざまなオブジェクト情報が格納されています。もちろん勝手に編集することはできませんが、テーブルの内容を見たり、クエリーを使って必要な情報だけを抽出することができます。
ここでは、クエリーを使って、必要なオブジェクトの種類(テーブルやフォーム)のオブジェクト名だけを一覧表示させる例をご紹介します。
- まず、システムテーブルをデータベースウィンドウに表示させるために、オプション設定を変更します。「オプション」ダイアログの[表示]タブにある[システム オブジェクト]にチェックを付けて[OK]ボタンを押します。

データベースウィンドウの"テーブル"に、「MSysObjects」という名前のテーブルが表示されていることを確認して、それを元に選択クエリーを作成します。
選択クエリーでは、MSysObjectsテーブルの「Name」フィールドと「Type」フィールドだけを選択します。Nameフィールドにはオブジェクトの名前が、またTypeフィールドにはオブジェクトの種類を表す数値が格納されています。例として今回はフォームだけを抽出してみます。Typeフィールドの抽出条件を「-32768」とします。このフィールドは一覧上は必要ないので、[表示]のチェックを外しておきます。
クエリーをデータシートビューで開きます。
フォーム以外のオブジェクトへの応用は、通常のクエリーのデザイン操作でできますので、いろいろ抽出条件を変えて試してみてください。なお、基本的な各オブジェクトの「Type」値は次のようになっています。
テーブル |
1 |
クエリー |
5 |
フォーム |
-32768 |
レポート |
-32764 |
モジュール |
-32761 |
|