「ワード マクロ if 表がなければ」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Wordマクロ・Word VBA(Visual Basic for Applications)で、表が存在するかどうかによって処理の分岐を行う方法を探している方による検索です。
アクティブ文書に表が存在するか判定するサンプルマクロ
表があるかを判定したあとに、どのような処理を行うかによって、いろいろな判定方法が考えられるでしょうが、ここでは汎用性の高そうな、TablesコレクションオブジェクトのCountプロパティを利用したコードをご紹介しておきます。
If ActiveDocument.Tables.Count = 0 Then
MsgBox "アクティブ文書に表は存在しません。"
Else
MsgBox "アクティブ文書に表が存在します。"
End If
End Sub
アクティブな文書に表が存在していないときに上記のマクロを実行すると、
「アクティブ文書に表は存在しません。」
とメッセージが表示され、存在していれば、
「アクティブ文書に表が存在します。」
と表示されます。
アクティブな文書のTablesプロパティで、Tablesコレクションオブジェクトを取得して、そのCountプロパティが「0」(ゼロ)ならば表は存在していない、「0」でなければ表が存在しているという判定です。
アクティブページに表が存在するか判定するサンプルマクロ
アクティブなページに表が存在しているかどうかを判定するなら、以下のようなコードです。
If ActiveDocument _
.Bookmarks("\page").Range.Tables.Count = 0 Then
MsgBox "アクティブページに表は存在しません。"
Else
MsgBox "アクティブページに表が存在します。"
End If
End Sub
考え方は先の文書全体に判定をするのと同じです。
アクティブ文書の場合は
ActiveDocument.Tables.Count
で、アクティブなページの場合は
ActiveDocument.Bookmarks("\page").Range.Tables.Count
としているのが違うだけです。
選択範囲に表が存在するか判定するサンプルマクロ
選択範囲に表が存在しているかどうかを判定するなら、以下のようなコードです。
If Selection.Tables.Count = 0 Then
MsgBox "選択範囲に表は存在しません。"
Else
MsgBox "選択範囲に表が存在します。"
End If
End Sub
Selectionプロパティで、Selectionオブジェクトを取得して、そのTablesコレクションオブジェクトの数を調べています。
最終更新日時:2021-09-03 16:49
Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » Word VBAで表が存在するかを判定