導入文
Accessでデータベースを管理していると、
「どんなテーブルがあるかを一覧で確認したい」
「フォーム上でテーブルを選択して処理したい」
といった場面がよくあります。
本記事では、Access VBAを使って テーブル一覧(テーブル名一覧)を取得し、フォームのListBoxに表示する方法 を解説します。
システムテーブルを除外し、実務で使いやすい形に整える方法も紹介します。
Accessでテーブル一覧(テーブル名一覧)を取得し、フォームに表示したい方に向けた実務向け解説です。
テーブル一覧をListBoxに表示する用途
テーブル一覧をフォームに表示できると、次のような用途に使えます。
データベース構成の確認
管理者向けのメンテナンス画面
テーブルを選択して処理を実行
Excel出力や設計確認の前段階
特に、テーブル名を固定せず動的に取得したい場合にVBAが有効です。
TableDefsを使ってテーブル一覧を取得する仕組み
Accessでは、TableDefs を使うことで
データベース内のすべてのテーブル情報を取得できます。
ただし、その中には
MSysで始まるシステムテーブル一時テーブル(
~で始まるもの)
も含まれるため、実務では除外処理が必要になります。
テーブル一覧をListBoxにセットする基本コード
以下は、フォーム上のListBoxに
テーブル名一覧を表示する基本コードです。
前提
フォームに ListBox(名前:
List0)を配置RowSourceType は「値リスト」
VBAコード(テーブル一覧をListBoxに表示)
Private Sub cmdTableList_Click()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim s As String
Set db = CurrentDb
‘ListBoxを初期化
Me.List0.RowSource = “”
For Each tdf In db.TableDefs
‘システムテーブル・一時テーブルを除外
If Left$(tdf.Name, 4) <> “MSys” _
And Left$(tdf.Name, 1) <> “~” Then
s = s & tdf.Name & “;”
End If
Next tdf
‘最後のセミコロンを削除
If Len(s) > 0 Then
s = Left(s, Len(s) – 1)
End If
Me.List0.RowSource = s
Set tdf = Nothing
Set db = Nothing
End Sub
ListBoxに表示されない場合のチェックポイント
ListBoxに何も表示されない場合は、以下を確認してください。
ListBox の RowSourceType が「値リスト」になっているか
List0が正しいコントロール名か対象のデータベースにユーザーテーブルが存在しているか
特に RowSourceType の設定忘れは初心者がつまずきやすいポイントです。
選択したテーブルを使って処理を行う拡張例
ListBoxにテーブル一覧を表示できると、
選択したテーブルを使った処理が簡単に作れます。
例
選択したテーブルをExcelに出力
選択したテーブルのレコード数を表示
テーブル構成(フィールド一覧)を取得
※ フィールド一覧をListBoxに表示する方法は、
別記事で詳しく解説しています。
よくあるエラーと対処
テーブル名が表示されない
システムテーブルしか存在しない
フィルタ条件が厳しすぎる
ListBoxに一部しか表示されない
RowSource が途中で上書きされている
セミコロンの処理が正しくない
関連記事
※ テーブル管理・設計確認を行う場合は、あわせて読むと便利です。
まとめ
Access VBAを使えば、データベース内のテーブル一覧を動的に取得し、
フォームのListBoxに表示することができます。
本記事のポイントは次の通りです。
TableDefsを使うことでテーブル一覧を取得できる
システムテーブルは除外するのが実務向き
ListBoxに表示することで、操作性が大きく向上する
選択したテーブルを使った処理へ拡張しやすい
テーブル一覧の可視化は、
Accessデータベースを安全・効率的に管理する第一歩です。

