access PR

Accessでテーブル一覧をExcelに出力する方法【VBA】

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

導入文

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データベース管理の基本かつ実務で非常に役立つ手法です。