Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » ListObject・テーブルを解除してセル範囲に変換するExcelマクロ

ListObject・テーブルを解除してセル範囲に変換するExcelマクロ

対象:Excel2007, Excel2010, Excel2013

テーブルを解除してセル範囲に変換するExcelマクロ

「excel vba テーブル設定解除」
「エクセルマクロでテーブルの解除のコマンドは」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あることに気が付きました。

Excelをデータベースとして使う場合に便利なテーブルを解除して、通常のセル範囲に変換するVBA(Visual Basic for Applications)のコードを探している方による検索です。

リボンからは、[テーブルツール]-[デザイン]タブ-[ツール]グループ-[範囲に変換]コマンドで、

テーブルを解除してセル範囲に変換するExcelマクロ

テーブルを解除して通常の表に変換できるのですが、マクロ記録を行っても、テーブルを解除するVBAのコードは作られません。(残念!)

そのため、どのようなテーブルを範囲に変換するには、どのようなコードを書けばいいのかを探してしまう方がいらっしゃるのは、とても納得できます。

[スポンサードリンク]

テーブルを解除するサンプルマクロ

以下のマクロで、アクティブなシートの、1つ目のテーブルを解除して、通常のセル範囲に変換することができます。


Sub テーブル解除()

 ActiveSheet.ListObjects(1).Unlist

End Sub

このマクロで利用しているオブジェクトモデルの階層関係は下図のとおりです。

テーブルを解除してセル範囲に変換するExcelマクロ

ActiveSheetプロパティで、アクティブなシートを取得して、

テーブルを解除してセル範囲に変換するExcelマクロ

WorksheetオブジェクトのListObjectsプロパティで、ワークシート上のすべてのテーブルを表すListObjectsコレクションオブジェクトを取得して、

テーブルを解除してセル範囲に変換するExcelマクロ

ListObjectsコレクションオブジェクトの_Deafaultプロパティに、アクティブシート上の1つ目のテーブルを取得するために「1」を指定して、ListObjectを取得して、

テーブルを解除してセル範囲に変換するExcelマクロ

ListObjectオブジェクトのUnlistメソッドで、

テーブルを解除してセル範囲に変換するExcelマクロ

テーブルを解除しています。

どうやってListObject.Unlistメソッドを探したのか

「エクセルマクロでテーブルの解除のコマンドは」
といった検索をするレベルの方だと、私がどうやってListObject.Unlistメソッドを見つけたのかが気になる部分かもしれません。

私は、テーブルがListObjectオブジェクトであることはわかっていたので、オブジェクトブラウザで、メンバーをグループメンバー表示にして、ListObjectオブジェクトのメソッドを眺めて、

テーブルを解除してセル範囲に変換するExcelマクロ

「Unlist」という名前から、テーブルを解除するメソッドだろうと判断しました。

アクティブブックの全テーブルを解除するサンプルマクロ

以下のマクロにすれば、アクティブなブックのすべてのテーブルを解除して、通常のセル範囲にすることができます。


Sub 全テーブル解除()

 Dim ws As Worksheet
 Dim ls As ListObject

 For Each ws In Worksheets
  For Each ls In ws.ListObjects
   ls.Unlist
  Next ls
 Next ws

End Sub

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

テーブルを解除してセル範囲に変換するExcelマクロ

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

各ワークシートの、すべてのテーブルにFor Each~Nextループを回して、
  For Each ls In ws.ListObjects

順番にテーブル解除を行っています。
   ls.Unlist

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » ListObject・テーブルを解除してセル範囲に変換するExcelマクロ

TrackBack:0

TrackBack URL

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » ListObject・テーブルを解除してセル範囲に変換するExcelマクロ

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

検索


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

.