Accessテーブルの一覧を表示する方法と一覧表の作り方

概要

この記事の結論
Accessのテーブル一覧を画面で見るには、ナビゲーションウィンドウを開き、表示対象をテーブルに切り替えます。見当たらないときは、検索文字、表示グループ、非表示属性、起動設定を順に確認します。一覧を資料として残す場合はDAOのTableDefsからテーブル名と種類を取得できます。ただしリンクテーブルの一覧は接続定義の一覧であり、リンク先の全データや接続成功を保証するものではありません。

この記事でわかること

  • ナビゲーションウィンドウでテーブルを表示する
  • 見えない原因とRuntimeの制限を分ける
  • DAOでテーブル名と種類を取得する
  • 引継ぎ用の一覧と接続情報の扱いを整理する

この記事の主な内容

  1. 画面で見る一覧と資料用の一覧を選ぶ
  2. ナビゲーションウィンドウで表示する
  3. テーブルが見えないときの確認手順
  4. ローカルとリンクとシステムを区別する
  5. DAOでテーブル一覧を取得する
  6. 一覧を引継ぎと保守に使う
  7. 表示と棚卸しの確認まとめ
  8. よくある質問

想定読了時間:約12分~15分


画面で見る一覧と資料用の一覧を選ぶ

テーブルを探して開きたい場合は、Access画面のナビゲーションウィンドウを使います。テーブル名を引継ぎ資料へ転記したい場合は、VBAのDAOを使って一覧化できます。目的を分けると、必要以上に設定を変えたり、内部管理用の表まで調べたりせずに進められます。

ナビゲーションウィンドウは、テーブル、クエリ、フォームなどのオブジェクトを探して開く領域です。画面左側にあるのが一般的で、表示する種類やグループを切り替えられます。「テーブルが見えない」は、データが削除されたことと同じ意味ではありません。
[参考1]

目的使う方法得られるもの
テーブルを探して開くナビゲーションウィンドウ画面上の一覧
名前と種類を資料へ残すDAOのTableDefsテキストとして扱える一覧
外部データとの接続を確認リンクテーブルマネージャーなど接続先・リンク状態の確認
業務上の用途を引き継ぐ一覧に説明を追記用途・主キー・担当者の台帳

一覧を作るだけでは、各テーブルが何に使われているかまでは分かりません。不要な表を整理したい場合も、名前だけで削除せず、クエリやフォームなどの参照先を確認します。接頭辞や古い更新日だけで不要と判断するのは避けましょう。

画面表示、テキスト一覧、設計資料で一覧の作り方を選ぶ図

ナビゲーションウィンドウで表示する

まずナビゲーションウィンドウを開き、オブジェクトの種類を基準にテーブルを表示します。表示領域が折りたたまれている場合は開閉ボタン、またはF11キーで切り替えます。環境によってはキーボードのFnキーとの組み合わせが必要になる場合があります。
[参考1]
[参考2]

テーブルだけを表示する手順

  1. 対象のAccessファイルを開きます。
  2. 左側のナビゲーションウィンドウを開きます。
  3. 上部の下向き矢印から、カテゴリを「オブジェクトの種類」にします。
  4. フィルターまたは表示グループで「テーブル」を選びます。
  5. 検索ボックスに文字が入っていれば、必要に応じて消します。
  6. 目的のテーブルを選び、名前と種類を確認してから開きます。

操作メニューの見え方はAccessの版や現在のカテゴリで異なります。カスタムカテゴリが選ばれている場合は、業務メニュー用のショートカットだけが表示されることがあります。標準の「オブジェクトの種類」へ切り替えると、表そのものを探しやすくなります。
[参考1]

名前で絞り込むときの注意

検索ボックスは、ナビゲーションに表示されるオブジェクトを絞るためのものです。商品名などテーブル内のレコードを検索する欄ではありません。「M_商品」を探す検索と、M_商品に入っている「コピー用紙」を探す検索は別操作です。

また、検索文字が残っていると、ほかのテーブルが見えなくなります。表示設定を変更する前に検索条件を消し、テーブルグループが折りたたまれていないかを確認しましょう。画面の状態を記録してから操作すると、元の表示へ戻しやすくなります。

ナビゲーションを開きオブジェクトの種類とテーブルを選ぶ手順

テーブルが見えないときの確認手順

見えないときは、表示条件、非表示属性、起動設定、Accessの実行環境の順に調べます。いきなりデータベースの破損や削除を疑う前に、どこまで見えるかを整理すると確認範囲を絞れます。

状況主な確認箇所対応
一部のテーブルだけない検索文字・グループ・非表示属性検索解除と表示対象を確認
テーブル以外だけ見えるオブジェクトの種類のフィルターテーブルまたは全オブジェクトへ変更
左側の領域そのものがない折りたたみ・起動設定開閉ボタン、F11、現在のDB設定
F11で切り替わらない特殊キーの許可・Runtime製品版かとアプリ設計を確認
別PCだけ一覧が異なる開いているファイルのパス・版同じフロントエンドか確認
名前はあるが開けないリンク先・権限・接続表示設定とは別に接続を調べる

非表示のオブジェクトを確認する

管理や保守の権限がある場合は、ナビゲーションオプションで「非表示のオブジェクトを表示」などの設定を確認します。非表示の表を見えるようにしても、その表を編集・削除してよいという意味ではありません。用途が不明な表は担当者へ確認してください。

システムオブジェクトは通常の業務テーブルと分けて扱います。システム用の表まで常時表示する必要はなく、一覧を探す目的だけでその内容を変更することもありません。MSysなどの内部管理テーブルは、通常の業務データとして編集しないようにします。

起動設定とRuntimeを区別する

製品版Accessでは、「ファイル」から「オプション」「現在のデータベース」を開き、ナビゲーションウィンドウを表示する設定を確認できます。設定によっては再度開き直す必要があります。特殊キーの使用が無効ならF11の動作にも影響するため、起動設定を合わせて調べます。
[参考3]

一方、Access Runtimeでは製品版と同じナビゲーション操作を前提にできません。業務アプリが専用メニューだけを用意している場合は、その設計に従います。利用者が開発用設定を無理に変更するのではなく、管理者が原本や管理用環境で一覧を確認する方が適切です。

検索、グループ、非表示、起動設定、実行環境を確認する図

ローカルとリンクとシステムを区別する

同じ一覧に見えていても、データの置き場所は同じとは限りません。ローカルテーブルは現在のAccessファイル内にデータがあり、リンクテーブルは外部のAccessファイルやSQL Serverなどを参照します。テーブル名が見えるだけでは、そのデータをこのファイルが保管していると判断できません。
[参考4]
[参考5]

種類データや役割の場所保守時に確認すること
ローカルテーブル現在のAccessファイルバックアップ対象、用途
Access等へのリンク別のファイルなど接続先パス、利用権限
ODBCリンクSQL Serverなどの外部DBサーバー・DB・認証・ドライバー
非表示の業務テーブルローカルまたはリンク非表示にした理由、用途
システムテーブルAccess内部の管理情報通常の編集対象から外す

非表示かどうかと、ローカルかリンクかは別の性質です。非表示のリンクテーブルもあり得ます。また、Access側のリンク名がM_商品でも、接続先ではdbo.Productsなど別の名前になっている場合があります。台帳には必要に応じて表示名と実体名を分けて記録します。

一覧に存在することと接続できることは違う

リンク定義が残っていれば、接続先へ到達できなくてもナビゲーションには名前が表示される場合があります。ネットワーク切断、ファイル移動、権限変更、ODBC設定の違いなどは、一覧表示の問題と分けて調べます。

逆に、フロントエンドのテーブル一覧へ出るのは、そのファイルに定義されたリンクです。SQL Server側にあるすべてのテーブルが自動的に列挙されるわけではありません。サーバー全体の棚卸しが目的なら、権限を持つ担当者がサーバー側でも調査します。

ローカルテーブル、リンクテーブル、システムテーブルの違い

DAOでテーブル一覧を取得する

テーブル名を資料へ残すには、DAOのTableDefsコレクションを使う方法があります。DAOはAccessのデータベース操作に使える仕組みで、TableDefsは現在のデータベースに保存されているテーブル定義の集まりです。レコードの中身を読み出さずに、名前や属性を取得できます。
[参考4]

読み取り専用の一覧出力例

以下の例は標準モジュールへ記述し、イミディエイトウィンドウへ「テーブル名・種類・非表示」をタブ区切りで出します。対象のテーブルを作成・更新・削除する処理は含めていません。接続文字列やパスも出力しない構成です。

Public Sub PrintTableList(Optional ByVal includeHidden As Boolean = False)
    Dim db As DAO.Database
    Dim td As DAO.TableDef
    Dim kind As String
    Dim hidden As Boolean
    Set db = CurrentDb
    Debug.Print “テーブル名” & vbTab & “種類” & vbTab & “非表示”
    For Each td In db.TableDefs
        If (td.Attributes And dbSystemObject) = 0 Then
            If Left$(td.Name, 1) <> “~” Then
                hidden = ((td.Attributes And dbHiddenObject) <> 0)
                If includeHidden Or Not hidden Then
                    If (td.Attributes And dbAttachedODBC) <> 0 Then
                        kind = “ODBCリンク”
                    ElseIf (td.Attributes And dbAttachedTable) <> 0 Then
                        kind = “ファイル等へのリンク”
                    Else
                        kind = “ローカル”
                    End If
                    Debug.Print td.Name & vbTab & kind & vbTab & _
                                IIf(hidden, “はい”, “いいえ”)
                End If
            End If
        End If
    Next td
    Set td = Nothing
    Set db = Nothing
End Sub

標準モジュールを作り、VBAエディターのイミディエイトウィンドウをCtrl+Gで表示します。そこへ「PrintTableList」と入力してEnterを押すと、通常の業務テーブルを一覧化します。非表示の業務テーブルも含める場合は「PrintTableList True」と実行します。

このコードでは、属性のビット判定でシステムテーブルを除き、先頭が~の内部作業用と考えられる定義も除外します。非表示の判定はDAOのdbHiddenObject属性に基づきます。ナビゲーションのカスタムグループで隠したショートカットや、検索による非表示と同じ判定ではありません。
[参考5]

エラーになる場合と出力の扱い

「ユーザー定義型は定義されていません」などが出る場合は、DAOの参照設定や「参照不可」の項目を確認します。環境に合うAccess database engineのオブジェクトライブラリを利用し、名前の似た参照をむやみに追加しないでください。配布用ACCDEやRuntimeで編集する手順としては使いません。

出力順は用途に合わせてExcelなどで並べ替えます。短い一覧ならイミディエイトウィンドウの出力をコピーしてExcelへ貼り付け、タブで列が分かれるか確認できます。1列になる場合はテキストの区切り位置でタブを指定します。大量の一覧はウィンドウの表示保持範囲に収まらない可能性があるため、件数を確認し、必要なら専用の出力処理へ拡張します。

定義を列挙し内部管理用を除外して種類と名前を出力する流れ

テーブル一覧とリンク構成の整理でお困りの方へ

検証用コピーでの確認が難しい場合や、複数の画面・外部連携へ影響する場合は、Accessの教科書のお問い合わせ窓口へご相談ください。現在の構成、困っている操作、変更したい内容を整理すると、確認すべき範囲を伝えやすくなります。


一覧を引継ぎと保守に使う

自動取得できる名前と種類だけでは、業務上の用途や保管責任者までは確定できません。出力後に担当者が用途、1行の意味、主キー、利用する画面、バックアップ対象を追記すると、改修や障害対応に使える台帳になります。

台帳項目例確認方法
Access側の名前M_商品TableDefsやナビゲーション
種類ODBCリンク属性とリンク設定
接続先の実体名dbo.Products権限のある管理者が確認
用途商品選択の候補画面・クエリの参照を確認
1行の意味商品1件業務担当へ確認
主キー商品ID設計定義を確認
更新担当商品管理担当運用手順で確認
バックアップ対象接続先DBバックアップ運用と照合

台帳の例は架空の構成です。実際には、作業用テーブルか、本番の原本か、外部データのコピーかも記録します。同じ名称の表が複数ファイルに存在する場合は、ファイルの識別情報とセットで管理しないと、どれを直すべきか分からなくなります。

接続文字列を無条件に配布しない

リンク情報には、サーバー名、ファイルパス、認証に関係する情報などが含まれる場合があります。TableDef.Connectをそのまま一覧へ出して配布するのではなく、何を記録する必要があるかを決めます。共有用の台帳と、限定された管理者が扱う接続設定を分ける方法が考えられます。

今回のコードは接続文字列を出力しません。リンク先の確認が必要なら、管理者が別に確認した情報を必要な範囲で台帳へ追記します。パスワードなどの認証情報を通常の引継ぎ一覧へ転記しない運用にしてください。

公開できる名称や用途と機密性のある接続情報を分ける図

件数を取る処理は別に考える

テーブル一覧と一緒に全表の件数も取ろうとすると、リンク先へ問い合わせが発生します。大きな表や応答の遅い接続先では時間がかかり、接続エラーも起きます。まず定義の一覧を作り、その後で必要な表だけ件数や内容を確認する方が、調査の目的を整理しやすくなります。


表示と棚卸しの確認まとめ

一覧に定義があること、接続先へ到達できること、必要なデータを読めることは、それぞれ別の確認です。障害時は「一覧にあるからデータも正常」と考えず、症状の段階に合わせて切り分けます。

確認する段階確認例判断できる範囲
定義の存在名前と種類が一覧に出る現在のファイルに定義がある
接続の成立リンク先へ到達できるパス・ネットワーク・認証が機能する
データの確認期待したキーや最新日付がある想定データを参照している
業務の動作画面で検索・更新ができる必要な業務処理が成立する

テーブルを見たいだけならナビゲーションの表示条件から確認し、保守資料が必要ならDAOの一覧を出発点にします。非表示やリンクなどの性質を区別し、用途と実体の場所まで整理することが、引継ぎや改修の判断につながります。

定義の存在、接続できること、正しいデータの3段階を区別する図

よくある質問

ナビゲーションの起動設定、特殊キーの使用設定、キーボードのFn動作、製品版AccessかRuntimeかを確認します。F11は製品版Accessでの表示切り替えに使えますが、どのアプリでも必ず有効とは限りません。専用メニューで運用する業務アプリでは、意図的に制限している場合もあります。まず管理者が実行環境と設計を確認し、許可された範囲で「現在のデータベース」の表示設定を調べてください。

削除されたとは限りません。検索文字が残っている、テーブル以外のグループを表示している、非表示属性が付いている、別のAccessファイルを開いているなどの可能性があります。検索を解除し、オブジェクトの種類と対象グループを確認してから、管理権限のある担当者が非表示設定を調べます。別PCと比べる場合はファイル名だけでなく保存場所や版も確認してください。表示されないこととデータの消失を分けて判断しましょう。

現在のAccessファイルへリンク定義が作られていれば、TableDefsの対象になります。本記事の例では属性を使ってODBCリンク、ファイル等へのリンク、ローカルを区別します。ただし、接続先のSQL Serverに存在するすべてのテーブルを取得するわけではありません。また、一覧に名前が出ても接続成功やデータ内容を確認したことにはなりません。接続先の棚卸しや障害調査では、権限のある担当者が別に確認します。

同じではありません。業務テーブルでも、利用者の誤操作を防ぐ目的で非表示にすることがあります。システムテーブルはAccessの内部管理に使われるもので、通常の業務データと分けて扱います。本記事のコードはシステム属性を除外し、非表示の業務テーブルは引数で含めるか選べます。ただし、ナビゲーションの検索やカスタムグループの表示条件は別です。何を含めた一覧なのかを明記して、目的に合う範囲を確認してください。

短い一覧なら、本記事のVBAでイミディエイトウィンドウへ出した結果をコピーし、Excelへ貼り付ける方法があります。出力はタブ区切りなので、名前、種類、非表示を別列に分けられます。1列になる場合は区切り位置の設定を確認してください。ただし大量の一覧ではウィンドウの表示保持範囲に収まらないことがあるため、件数を照合します。繰り返し使う場合は、必要な項目だけをファイルへ出力する専用処理を検討すると便利です。

名前や更新日だけで削除を判断しないでください。直接開かない表でも、クエリ、フォーム、帳票、VBA、外部連携から参照されている場合があります。まず用途と参照先を調べ、バックアップを取り、検証用コピーで削除の影響を確認します。リンクテーブルの場合はAccess側の定義と外部の実体を区別することも重要です。使われていないと確認できた場合でも、保存要件や担当者の合意を確認してから整理を進めましょう。

テーブル一覧とリンク構成の整理でお困りの方へ

検証用コピーでの確認が難しい場合や、複数の画面・外部連携へ影響する場合は、Accessの教科書のお問い合わせ窓口へご相談ください。現在の構成、困っている操作、変更したい内容を整理すると、確認すべき範囲を伝えやすくなります。

関連記事

Accessのテーブルとは

Accessリンクテーブルの作成

リンク先変更と再リンク

オブジェクトの依存関係


参考情報

参考1 Microsoft Support|ナビゲーションの使用
https://support.microsoft.com/en-us/access/use-the-navigation-pane

参考2 Microsoft Support|ナビゲーションの表示
https://support.microsoft.com/en-us/access/show-or-hide-the-navigation-pane-in-access

参考3 Microsoft Support|現在のDBのオプション
https://support.microsoft.com/en-us/access/set-user-options-for-the-current-database

参考4 Microsoft Learn|TableDefs
https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/tabledefs-collection-dao

参考5 Microsoft Learn|TableDef属性
https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/tabledefattributeenum-enumeration-dao

TOP