導入文
Accessでデータベースを運用していると、
「どんなテーブルがあるのかを一覧で確認したい」
「設計確認や引き継ぎ用に、テーブル一覧をExcelにまとめたい」
といった場面がよくあります。
本記事では、Access VBAを使ってテーブル一覧(テーブル名一覧)を取得し、Excelへ出力する方法を解説します。
システムテーブルを除外し、実務で使いやすい形に整えるポイントもあわせて紹介します。
テーブル一覧をExcelに出力する用途
テーブル一覧をExcelに出力できると、次のような用途に活用できます。
データベース構成の把握
設計書・管理資料の作成
引き継ぎ・レビュー用の一覧表
不要テーブルの洗い出し
Access上だけで確認するよりも、
Excelに出力することで一覧性・共有性が大きく向上します。
TableDefsを使ってテーブル一覧を取得する仕組み
Accessでは、TableDefs コレクションを使うことで
データベース内に存在するテーブル情報を取得できます。
ただし、以下のようなテーブルも含まれます。
MSysで始まるシステムテーブル一時テーブル(
~で始まるもの)
そのため、実務では除外処理を行うのが一般的です。
テーブル一覧をExcelへ出力する基本コード
ここでは、Access VBAからExcelを起動し、
テーブル一覧をA列に出力する基本コードを紹介します。
VBAコード(テーブル一覧 → Excel出力)
Option Compare Database
Option Explicit
Public Sub Export_TableList_To_Excel()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Dim rowNum As Long
Dim savePath As String
On Error GoTo EH
Set db = CurrentDb
‘Excel起動
Set xlApp = CreateObject(“Excel.Application”)
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
‘見出し
xlSheet.Range(“A1”).Value = “テーブル名一覧”
rowNum = 2
‘テーブル一覧を出力
For Each tdf In db.TableDefs
If Left$(tdf.Name, 4) <> “MSys” _
And Left$(tdf.Name, 1) <> “~” Then
xlSheet.Cells(rowNum, 1).Value = tdf.Name
rowNum = rowNum + 1
End If
Next tdf
‘列幅調整
xlSheet.Columns(“A:A”).AutoFit
‘保存
savePath = CurrentProject.Path & “\TableList.xlsx”
xlBook.SaveAs savePath
xlBook.Close SaveChanges:=False
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
Set db = Nothing
MsgBox “テーブル一覧をExcelに出力しました。”, vbInformation
Exit Sub
EH:
MsgBox “エラー: ” & Err.Number & vbCrLf & Err.Description, vbExclamation
On Error Resume Next
If Not xlBook Is Nothing Then xlBook.Close SaveChanges:=False
If Not xlApp Is Nothing Then xlApp.Quit
End Sub
出力結果のイメージ
Excelには次のような形式で出力されます。
| テーブル名一覧 |
|---|
| T_売上 |
| T_顧客 |
| T_商品 |
| T_明細 |
一覧で確認できるため、
設計確認や資料作成が非常に楽になります。
ListBox表示とExcel出力を組み合わせる
すでにフォームで テーブル一覧をListBoxに表示している場合は、
ListBoxで選択
ボタンでExcel出力
といった構成に拡張することも可能です。
テーブル一覧をフォームに表示する方法については、
以下の記事で詳しく解説しています。
Accessでテーブル一覧をListBoxに表示する方法|VBAでテーブル名を自動取得
よくあるエラーと対処
Excelが終了しない
Quitが実行されていないエラー時の終了処理がない
→ On Error GoTo EH を使い、必ず Quit するようにします。
テーブルが一部しか出力されない
フィルタ条件が厳しすぎる
システムテーブル以外の条件を入れている
関連記事(内部リンク)
※ テーブル構成を把握する場合は、あわせて読むと効率的です。
まとめ
Access VBAを使えば、
データベース内のテーブル一覧を簡単に取得し、Excelへ出力できます。
本記事のポイントは次の通りです。
TableDefsを使ってテーブル一覧を取得できるシステムテーブルは除外するのが実務向き
Excelに出力することで一覧性・共有性が向上する
フォーム(ListBox)と組み合わせるとさらに便利
テーブル一覧のExcel出力は、
Accessデータベース管理の基本かつ実務で非常に役立つ手法です。

