Wordでは、同じ定型文を置き換える、確認が必要な箇所を探す、見出しの書式を整えるといった作業が繰り返し発生します。Word VBAでは、文書全体を表すDocument、文書内の範囲を表すRange、段落を表すParagraphなどを操作して、これらの作業を再現できます。まずはコピーした文書で試し、変更範囲を確認してから本番の文書へ広げます。
VISUAL GUIDE
Word VBAの処理の流れ
Wordでは、文書全体を一度に変更するより、Rangeで対象範囲を絞る方が安全です。自動処理の後は、文章の意味やレイアウトを目視で確認します。
Word VBAで自動化しやすい作業
定型の案内文や会社名の置換、確認用の語句の検索、見出しの書式統一、文書の冒頭や末尾への注意書き追加などは、Word VBAの題材に向いています。文書の構造がある程度そろっているほど、同じ処理を繰り返しやすくなります。
文章の意味を判断する作業や、表の行間を最適に調整する作業まで自動化すると、意図しない変更が起きる可能性があります。VBAで候補を整理し、人が最終確認する流れを前提にします。
- 定型語・会社名・日付の置換
- 確認語の検索と強調
- 見出しの書式統一
- 冒頭や末尾への定型案内の追加
Document・Range・Paragraphを理解する
Word VBAでは、対象をどこまで絞るかが重要です。ActiveDocumentは現在の文書全体、Rangeは文書内の開始位置と終了位置で表す範囲、Paragraphは段落単位の要素です。選択中の文字を操作するSelectionより、コードで範囲を指定できるRangeの方が再現性を保ちやすい場合があります。
文書全体を対象にする処理でも、まずRangeを変数に入れてからFindや書式設定を行うと、コードの意図が読みやすくなります。対象範囲を明示する癖をつけると、別の文書を開いたときの誤操作も減らせます。
| オブジェクト | 役割 | コードの例 |
|---|---|---|
| Document | 開いている文書全体 | ActiveDocument |
| Range | 文書内の指定範囲 | ActiveDocument.Content |
| Paragraph | 段落単位の情報 | ActiveDocument.Paragraphs(1) |
| Find | 範囲内の検索と置換 | rng.Find |
マクロを保存・実行する前の準備
Wordでマクロを保存する文書は、マクロ有効文書(docm)として保存します。開発タブからVisual Basicを開き、標準モジュールへコードを置きます。初回は本番文書ではなく、コピーした練習用文書で実行し、変更前と変更後を比べられるようにします。
マクロの設定を変更するときは、信頼できるファイルだけを対象にします。出所が分からない文書のマクロを有効にしない、作業後に設定を戻す、という基本を守ります。
- 練習用のdocmファイルを作る
- 元の文書を複製してから実行する
- 対象範囲と置換語を確認する
- 不明なファイルのマクロは有効にしない
定型語を一括置換する
次のマクロは、文書全体から「[会社名]」を探し、サンプルの会社名へ置き換えます。テンプレート内のプレースホルダーを納品先の情報へ差し替えるときなどに使えます。置換前に、対象語が本文だけでなくヘッダーや表にもあるかを確認してください。
Option Explicit
Sub ReplacePlaceholder()
Dim rng As Range
Set rng = ActiveDocument.Content
With rng.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[会社名]"
.Replacement.Text = "サンプル株式会社"
.Forward = True
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
End Subポイント:会社名や日付を置換する場合は、置換後の文字数でレイアウトが変わることがあります。実行後にタイトル、表、ヘッダー、フッターを目視で確認します。
確認が必要な語句を強調する
レビュー前の文書では、「要確認」「仮」「未入力」などの語句を見つけたいことがあります。Findで語句を検索し、見つかったRangeに黄色のハイライトを設定すると、確認箇所を一覧化しやすくなります。
検索後にRangeを末尾へ移動してから次の検索を行うのがポイントです。検索語が見つからない場合にも処理が終わるよう、WrapをwdFindStopに設定します。
Option Explicit
Sub HighlightReviewWords()
Dim rng As Range
Set rng = ActiveDocument.Content
With rng.Find
.ClearFormatting
.Text = "要確認"
.Forward = True
.Wrap = wdFindStop
Do While .Execute
rng.HighlightColorIndex = wdYellow
rng.Collapse Direction:=wdCollapseEnd
Loop
End With
End Sub文書の先頭に定型案内を追加する
文書の冒頭に「社内確認用」「ドラフト」などの案内を入れたいときは、開始位置が0のRangeを作り、そこへ文字を挿入します。文書の内容を上書きする前に、先頭に既に同じ案内がないかを確認する処理を追加すると、再実行時の重複を防げます。
Option Explicit
Sub AddReviewNotice()
Dim rng As Range
Set rng = ActiveDocument.Range(Start:=0, End:=0)
rng.InsertBefore "社内確認用:公開前に内容を確認してください。" & vbCrLf
End Subポイント:文書の開始位置へ挿入するため、実行するたびに案内が増えます。再実行する可能性がある場合は、先に同じ文字列をFindで探し、見つからないときだけ追加する構成にします。
段落の書式をそろえる
見出し候補の段落を決められる文書なら、ParagraphのRangeへスタイルを設定できます。スタイル名はWordの言語やテンプレートによって異なるため、最初は1段落だけで試し、表示された書式を確認します。
Option Explicit
Sub FormatFirstParagraph()
Dim p As Paragraph
Set p = ActiveDocument.Paragraphs(1)
p.Range.Style = ActiveDocument.Styles("見出し 1")
End Sub- スタイル名が環境に存在するか確認する
- 1段落だけで結果を確認する
- 文字量による改ページを確認する
- 元のテンプレートを上書きしない
実行後に確認する4つの場所
Word VBAの実行後は、コードがエラーなく終わったかだけでなく、文書として読めるかを確認します。置換や挿入によってページ数が変わった場合は、表の分割や見出しの孤立、ヘッダー・フッターのずれも見ます。
変更範囲が広いマクロは、実行前に文書のコピーを作り、変更内容を記録します。意図しない結果になったときに、元の文書へ戻せる状態を残すことが最優先です。
| 確認場所 | 見るポイント |
|---|---|
| 本文 | 置換漏れ、誤置換、文章の意味 |
| 見出し | スタイル、改ページ、目次への影響 |
| 表・画像 | ページをまたぐ位置、文字の重なり |
| ヘッダー・フッター | 日付、会社名、ページ番号のずれ |
小さな処理を組み合わせて文書作成を整える
最初は置換、次に確認語の強調、その後に書式設定というように、一つのマクロへ機能を詰め込みすぎないことが大切です。役割ごとにSubを分け、実行順序を手順書に残すと、別の文書でも使いやすくなります。
Word VBAは、文章の判断を代わりに行うものではありません。定型処理を短くし、確認すべき箇所を見つけやすくするための道具です。自動化できた時間を、文章の内容と読みやすさの確認へ使います。
- 置換・検索・書式設定を分ける
- 実行順序と対象文書を記録する
- 本番文書はコピーしてから処理する
- 最後は人が内容とレイアウトを読む
CHECK THE SOURCE
参考にした公式情報
Word VBAは、Document全体を扱いながら、Rangeで対象を絞り、ParagraphやFindで定型作業を実行する道具です。置換・確認語の強調・書式設定を小さく試し、実行後の目視確認までを一つの手順にしましょう。