Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » Excel VBAでテーブル名を取得する-ListObject.Name

Excel VBAでテーブル名を取得する-ListObject.Name

対象:Excel2007, Excel2010, Excel2013

テーブル名を取得するExcel VBAのコード

「vba excelテーブル名を取得」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

2003までのExcelで[リスト]と呼ばれていた機能が、2007以降は[テーブル]と呼び方が変わっています。Excelをデータベースとして使う場合に便利な機能です。

このテーブルの名前を取得するVBAのコードを探している方による検索でしょうか。

テーブル名を取得するExcel VBAのコード

「vba excelテーブル名を取得」
という検索キーワードだけでは、詳細がわかりませんので、参考になりそうなマクロを2つご紹介しておきます。

[スポンサードリンク]

アクティブシート上の一つ目のテーブル名を取得するサンプルマクロ

以下のマクロを実行すると、アクティブなシート上の、1つ目のテーブルの名前がメッセージボックスに表示されます。

Sub テーブル名を取得する()
 MsgBox ActiveSheet.ListObjects(1).Name
End Sub

上記のマクロで利用しているオブジェクトモデルを階層図にすると、下図のようなイメージです。

テーブル名を取得するExcel VBAのコード

コードの意味は以下のとおりです。

WorkSheetオブジェクトのListObjectsプロパティで、ListObjectsコレクションオブジェクトを取得して、

テーブル名を取得するExcel VBAのコード

ListObjectsコレクションオブジェクトのデフォルトプロパティ(_Defaultプロパティ)の引数に「1」を指定することで、1つ目のListObjectオブジェクトを取得して、

テーブル名を取得するExcel VBAのコード

そのListObjectオブジェクトのNameプロパティを取得して、

テーブル名を取得するExcel VBAのコード

メッセージボックスに表示しています。

アクティブブック上の全テーブル名を取得するサンプルマクロ

実務で要望としてあがりそうなのが、ブック内の、すべてのテーブル名を取得したいという要望です。

以下のようなマクロで、アクティブなブック内の、全テーブル名を取得して、イミディエイトウィンドウに出力できます。

Sub 全テーブル名を取得する()
 Dim ws As Worksheet
 For Each ws In ActiveWorkbook.Worksheets
  Dim lst As ListObject
  For Each lst In ws.ListObjects
   Debug.Print lst.Name
  Next lst
 Next ws
End Sub

先のマクロよりもオブジェクトモデルの階層が一段深くなっています。

テーブル名を取得するExcel VBAのコード

オブジェクトブラウザーで「listobjects」を検索してみるとわかるとおり、ListObjectsコレクションオブジェクトを取得するための、ListObjectsプロパティは、Worksheetオブジェクトにだけ存在していますから、

テーブル名を取得するExcel VBAのコード

アクティブなワークブックに含まれる、すべてのワークシートに対してFor Each~Nextループを回して、
 For Each ws In ActiveWorkbook.Worksheets

個々のワークシート上のすべてのListObjectに対してFor Each~Nextループを回し、
  For Each lst In ws.ListObjects

ListObjectオブジェクトの名前をDebug.Printしています。
   Debug.Print lst.Name

最終更新日時:2019-10-30 15:42

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » Excel VBAでテーブル名を取得する-ListObject.Name

「ListObjectオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.