Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » 表の中に表があるか調べるWordマクロ

表の中に表があるか調べるWordマクロ

対象:Word2007, Word2010, Word2013

「ワード マクロ 表の中の表を判定」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

表の中に表があるかどうかを判定する、Wordマクロ・Word VBA(Visual Basic for Applications)のコードを探している方による検索です。

アクティブな表の中に表があるかを判定するサンプルマクロ

以下のマクロで、アクティブな表の中に表が存在しているかどうかを判定することができます。

Sub アクティブな表の中に表があるかをチェックする()

 Dim msg As String

 If Selection.Tables(1).Tables.Count >= 1 Then
  msg = "アクティブな表の中に表が存在しています。"
 Else
  msg = "アクティブな表の中に表はありません。"
 End If

 MsgBox msg

End Sub

Tableオブジェクトの、Tablesプロパティを使えば、表の中に表が存在しているかを調べられます。

表の中に表があるか調べるWordマクロ

TableオブジェクトのTablesプロパティは、Tableオブジェクトの中にある、Tablesコレクションオブジェクトを返すプロパティだからです。

Tableオブジェクトの中のTablesコレクションオブジェクトの数が「0」であれば、Tableオブジェクトの中にTablesコレクションオブジェクトは存在していないわけですから、表の中に表は存在していないことになります。

Tableオブジェクトの中のTablesコレクションオブジェクトの数が「1」以上であれば、Tableオブジェクトの中にTablesコレクションオブジェクトが存在しているわけですから、表の中に表が存在していることになります。

この考え方を利用して、アクティブな表の中の、TablesコレクションオブジェクトのCountプロパティが「1」以上だったときに、
 If Selection.Tables(1).Tables.Count >= 1 Then

アクティブな表の中に表があるという文字列を作成して、
  msg = "アクティブな表の中に表が存在しています。"

アクティブな表の中の、TablesコレクションオブジェクトのCountプロパティが「1」未満だったときには、アクティブな表の中に表はないという文字列を作成して、
 Else
  msg = "アクティブな表の中に表はありません。"

MsgBox関数で、作成した文字列を表示しています。
 MsgBox msg

アクティブな文書内にある表の中に表があるかを判定するサンプルマクロ

以下のようなマクロにすれば、アクティブ文書内の表の中に表が存在しているかどうかを判定することができます。

Sub アクティブ文書内の表の中に表があるかを調べる()

 Dim tbl As Table
 Dim msg As String

 msg = ""

 For Each tbl In ActiveDocument.Tables
  If tbl.Tables.Count >= 1 Then
   msg = msg & _
    tbl.Range.Information(wdActiveEndPageNumber) & vbCrLf
  End If
 Next tbl

 If msg = "" Then
  Debug.Print "アクティブ文書の表の中に表はありません。"
 Else
  Debug.Print "以下のページの表の中に表があります。" _
   & vbCrLf & msg
 End If

End Sub

上記のマクロを実行したときに、表の中に表が存在していると、イミディエイトウィンドウに以下のような出力が行われます。

表の中に表があるか調べるWordマクロ

アクティブな文書内の、すべての表に対してループを回して、
 For Each tbl In ActiveDocument.Tables

その表の中のTablesコレクションオブジェクトの数を調べて「1」以上だったときには、
  If tbl.Tables.Count >= 1 Then

ページ番号を変数・msgに格納しておきます。
   msg = msg & _
    tbl.Range.Information(wdActiveEndPageNumber) & vbCrLf

すべての表に対するループが終わったあとに、変数・msgに応じた内容をイミディエイトウィンドウに出力しています。
 If msg = "" Then
  Debug.Print "アクティブ文書の表の中に表はありません。"
 Else
  Debug.Print "以下のページの表の中に表があります。" _
   & vbCrLf & msg
 End If

最終更新日時:2021-09-03 17:51

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » 表の中に表があるか調べるWordマクロ

「表・テーブル」の記事一覧

検索


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

.