access PR

Accessでテーブル一覧をListBoxに表示する方法|VBAでテーブル名を自動取得

記事内に商品プロモーションを含む場合があります

導入文

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データベースを安全・効率的に管理する第一歩です。