表のあるセル中に挿入された表を「入れ子の表」と呼びます。英語では、nested table です。
最近のDTPのお仕事で、入れ子の表に対して個別にプロパティを設定する場面がありました。
今回の記事では、入れ子の表のスタイルを設定する方法を紹介します。
<目次>
このマクロでできること
以下のように、2つの表があります。それぞれの表に入れ子の表があります。
マクロを実行すると、大元の表はオレンジ色のスタイルが設定され、入れ子の表には青色のスタイルが設定されます。
マクロの解説
15行目で大元となる表のスタイルを設定しています。
27行目で入れ子の表のスタイルを設定しています。
入れ子の表は、Table オブジェクト内のTable コレクションで取得できます。
入れ子の表がない場合にはTable コレクションがないので、青色の処理はスキップされます。
入れ子の表の中にさらに入れ子の表がある場合もあるので、それを30行目の再帰呼び出し(Weblio辞書の説明)で処理しました。
マクロ
Sub 表のスタイル設定() Dim myTable As Table For Each myTable In ActiveDocument.Tables Call ProcessTable(myTable) Next End Sub Private Sub ProcessTable(myTable As Table) Dim myNestedTable As Table myTable.Style = "表 (オレンジ) 1" For Each myNestedTable In myTable.Tables Call ProcessNestedTable(myNestedTable) Next End Sub Private Sub ProcessNestedTable(myTable As Table) Dim myNestedTable As Table myTable.Style = "表 (青) 8" For Each myNestedTable In myTable.Tables Call ProcessNestedTable(myNestedTable) Next End Sub