Home » ワードマクロ・Word VBAの使い方 » ヘッダー&フッター » フッターの表内セルの垂直方向配置を設定するWordマクロ

フッターの表内セルの垂直方向配置を設定するWordマクロ

動作検証バージョン:Windows 11 Home + 64bit Word バージョン 2404(ビルド17531.20000クイック実行)ベータチャネル

最近、複数のセクションに分かれた、200ページほどのWord文書を編集しています。

そのWord文書で、フッターを細かく設定したくなり試行錯誤した結果、罫線の存在しない1行×3列の表を挿入することにしました。
その表内セルの縦方向の配置を変更するための、Wordマクロを作りました。

本文内の表であれば、スタイルを作るほうが良かったと思うのですが、複数セクションの複数フッター内の表であるため、マクロで設定するほうが便利だろと、2024年4月時点の私は判断しました。

フッターの表内セルの垂直方向配置を設定するサンプルマクロ

以下のWordマクロを実行すると、アクティブなWord文書の、全セクションの全フッターの表内セルの垂直方向配置が下揃えになります。

Sub フッターの表内セルの垂直方向配置を設定する()
 Dim sec As Section
 For Each sec In ActiveDocument.Sections

  Dim ftr As HeaderFooter
  For Each ftr In sec.Footers
   If ftr.Range.Tables.Count = 0 Then Exit For

   Dim cel As Cell
   For Each cel In ftr.Range.Tables(1).Rows(1).Cells
    cel.VerticalAlignment = wdCellAlignVerticalBottom
   Next cel

  Next ftr

 Next sec
End Sub

サンプルマクロで行っている処理

全セクションに対するFor Each~Nextループの中で、

Dim sec As Section
For Each sec In ActiveDocument.Sections

全フッターに対するFor Each~Nextループを使用するのは、

 Dim ftr As HeaderFooter
 For Each ftr In sec.Footers

複数セクションの複数のヘッダー&フッターを操作する際の基本といえる構造です。
この2重のFor Each~Nextループの中で、表のセルに対するFor Each~Nextループを回しています。

  Dim cel As Cell
  For Each cel In ftr.Range.Tables(1).Rows(1).Cells

今回は1行だけの表をフッターに作成しているので、Inキーワードの後ろを「ftr.Range.Tables(1).Rows(1).Cells」と指定しています。

拙著『Excel VBAユーザーのためのWord VBA入門(2): Tableの基本編』の[13-3. Rowの特徴的なプロパティ]で、以下のようなコードをご紹介しています。

Dim cel as Cell, txt As String
For Each cel In ActiveDocument.Tables(1).Rows(1).Cells
 cel.Select
 txt = cel.Range.Text
 MsgBox Left(txt, Len(txt) - 2)
Next

表の存在する場所が、本文かフッターかという違いはあるものの、表の1行目の全セルを処理するという観点では本記事のサンプルマクロと同じ構造です。

  Dim cel As Cell
  For Each cel In ftr.Range.Tables(1).Rows(1).Cells

3重のFor Each~Nextループ内で、拙著の[10-4. Cellの特徴的なプロパティ]でも紹介しているCell.VericalAlignmentプロパティを使って、垂直方向配置を設定しています。

   cel.VerticalAlignment = wdCellAlignVerticalBottom

全フッターに対して処理をする関係で、表の存在しないフッターもあり得るため、全フッターに対するFor Each~Nextループに入ってすぐの時点で、表が無ければFor Each~Nextループを抜けるようにしています。

 Dim ftr As HeaderFooter
 For Each ftr In sec.Footers
  If ftr.Range.Tables.Count = 0 Then Exit For
[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » ヘッダー&フッター » フッターの表内セルの垂直方向配置を設定するWordマクロ

「ヘッダー&フッター」の記事一覧

検索


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

.