Home » ワードマクロ・Word VBAの使い方 » ヘッダー&フッター » Word VBAでヘッダー文字列の配置を指定する-ParagraphFormat.Alignment

Word VBAでヘッダー文字列の配置を指定する-ParagraphFormat.Alignment

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

「word vba 中央に配置するヘッダーの設定/取得」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスがありました。

おそらく、Excel VBAの経験がある方による検索でしょう。

Excelではヘッダーは、下図のように[左側][中央部][右側]の3箇所に分かれています。

Wordのヘッダーも同じだろうと推測して、
「word vba 中央に配置するヘッダーの設定/取得」
と検索なさったのでしょう。

まず意識していただきたいのは、WordのヘッダーはExcelのヘッダーとは異なり、[左側][中央部][右側]の3箇所に分かれてはいないということです。

ヘッダーに文字列を設定して配置を変更するサンプルマクロ

新規に作成したWord文書がアクティブな状態で、以下のWordマクロを実行してください。

Sub ヘッダーに文字列を設定して配置を変更する()
 Dim rng As Range
 Set rng = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
  
 rng.Text = "ヘッダーの文字列"
 Stop

 rng.ParagraphFormat.Alignment = wdAlignParagraphRight
 Stop
 
 rng.ParagraphFormat.Alignment = wdAlignParagraphCenter
End Sub

ヘッダーの左のほうに「ヘッダーの文字列」と入力が行われた状態でマクロが中断し、ショートカットキー[F5]などで実行を継続すると「ヘッダーの文字列」が右揃えになった状態で再度中断し、もう一度実行すると「ヘッダーの文字列」が中央揃えになります。

拙著『Excel VBAユーザーのためのWord VBA入門(1): Document・Range・Selectionの基本編』の、[5-1. ParagraphFormatの特徴的なプロパティ]で、段落の配置を取得/設定するParagraphFormat.Alignmentプロパティをご紹介しています。

上記マクロで使用しているのも、ParagraphFormat.Alignmentプロパティです。

ParagraphFormat.Alignmentプロパティに、WdPaaragraphAlignment列挙型に定義されている定数wdAlignParagraphRightを指定すれば、右揃えになり

rng.ParagraphFormat.Alignment = wdAlignParagraphRight

定数wdAlignParagraphCenterを指定すれば、中央揃えになります。

rng.ParagraphFormat.Alignment = wdAlignParagraphCenter

本文に文字列を設定して配置を変更するサンプルマクロ

先ほどの、ヘッダーに文字列を設定して配置を変更するマクロで操作したWord文書がアクティブな状態で、以下のマクロも実行してみてください。

Sub 本文に文字列を設定して配置を変更する()
 Dim rng As Range
 Set rng = ActiveDocument.Range
  
 rng.Text = "本文の文字列"
 Stop
 
 rng.ParagraphFormat.Alignment = wdAlignParagraphRight
 Stop
 
 rng.ParagraphFormat.Alignment = wdAlignParagraphCenter
End Sub

ヘッダーの左のほうに「ヘッダーの文字列」と入力が行われた状態でマクロが中断し、ショートカットキー[F5]などで実行を継続すると「ヘッダーの文字列」が右揃えになった状態で再度中断し、もう一度実行すると「ヘッダーの文字列」が中央揃えになります。

本文の左のほうに「本文の文字列」と入力が行われた状態でマクロが中断し、ショートカットキー[F5]などで実行を継続すると「本文の文字列」が右揃えになった状態で再度中断し、もう一度実行すると「本文の文字列」が中央揃えになります。

先にご紹介したヘッダー文字列の配置を変更するマクロとの違いは、変数rngに設定しているRangeオブジェクトです。

ヘッダーの場合は以下のコードで取得しているのに対し、

Set rng = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range

本文の場合は以下のコードです。

Set rng = ActiveDocument.Range

どちらも、Word VBAで最重要なオブジェクトの1つ、Rangeオブジェクトを利用しているという点では同じです。

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » ヘッダー&フッター » Word VBAでヘッダー文字列の配置を指定する-ParagraphFormat.Alignment

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

検索


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

.