こんにちは!Word VBAの世界へようこそ。
マクロの記録ボタンを押して「なんだかよく分からないけれど自動で動いたぞ!」と感動したのも束の間、「ここからどうやって自分でコードを書けばいいんだろう?」と立ち止まっていませんか?
大丈夫。ここをクリアすれば、Word VBAの基本はバッチリですよ。
今回は、実務の現場でめちゃくちゃ役立つ「指定したフォントサイズ以外の段落を自動で黄色くハイライトする校閲補助ツール」を一緒に作っていきましょう。
プログラミングの基礎と、Wordを思い通りに操るための「ちょっとしたコツ」を、優しく丁寧に解説していきますね。
—
なぜ、このツールが必要なのか?
例えば、社内規定やマニュアルを作成するとき、「本文は10.5ポイント、見出しは14ポイント」といったフォントサイズのルールが厳格に決められていることがありますよね。
でも、何十ページもあるドキュメントを目視だけでチェックするのは、人間の目にも限界がありますし、何より時間の無駄です。
「規定外のサイズになっている怪しい段落を、VBAが一瞬で見つけ出して黄色でマーキングしてくれたら……」
今日のゴールは、まさにその夢を叶える実用的なプログラムを作ることです。
—
開発の第一歩:VBEを開いてモジュールを追加しよう
まずは、Wordの中でVBAを書くための専用画面(VBE:Visual Basic Editor)を開きましょう。
1. Wordを開いた状態で、キーボードの [Alt] + [F11] キーを押します。
2. 画面上部のメニューから [挿入] > [標準モジュール] をクリックします。
3. 真っ白なエディタ画面が表示されたら準備完了です。ここに魔法のコードを書き込んでいきます。
—
【実践】校閲補助ツールの完全コード
以下のコードを、先ほど開いた標準モジュールにそのままコピー&ペーストしてください。
Option Explicit
‘ =====================================================================
‘ 汎用校閲ツール:規定外フォントサイズの段落をハイライトする
‘ =====================================================================
Sub HighlightInvalidFontSizeParagraphs()
‘ 1. 変数の宣言(扱うデータに名前をつけておく箱のようなものです)
Dim tgtParagraph As Paragraph
Dim targetSize As Single
Dim foundCount As Long
‘ 2. チェック基準となる「正しいフォントサイズ(ポイント)」を指定
‘ ※今回は標準的な本文サイズ「10.5」を基準とします
targetSize = 10.5
‘ 3. カウンターの初期化(見つかった数を数えるため)
foundCount = 0
‘ 4. 事前準備:過去のハイライト(黄色の蛍光ペン)を一旦すべて消去する
‘ これをやっておかないと、修正したあとも黄色が残り続けてしまいます
ActiveDocument.Content.HighlightColorIndex = wdNoHighlight
‘ 5. 文書内のすべての段落を上から順にひとつずつチェックしていく(ループ処理)
For Each tgtParagraph In ActiveDocument.Paragraphs
‘ 【重要】段落の中に文字が全くない(改行だけの空行)場合は
‘ フォントサイズを取得するとエラーになることがあるためスキップします
If Len(tgtParagraph.Range.Text) > 1 Then
‘ 段落の「最初の文字」のフォントサイズをチェック基準にします
‘ ※Wordは1つの段落の中に複数のサイズが混在できるため、代表として先頭を見ます
If tgtParagraph.Range.Font.Size <> targetSize Then
‘ 基準サイズと違っていれば、段落全体を黄色でハイライト!
tgtParagraph.Range.HighlightColorIndex = wdYellow
‘ 見つかった件数を1つプラス
foundCount = foundCount + 1
End If
End If
Next tgtParagraph
‘ 6. 処理結果をメッセージボックスで優しくお知らせ
If foundCount > 0 Then
MsgBox “チェック完了しました!” & vbCrLf & _
“規定外のフォントサイズの段落が ” & foundCount & ” 箇所見つかりました。”, _
vbExclamation, “校閲結果”
Else
MsgBox “素晴らしい!規定外のフォントサイズは見つかりませんでした。”, _
vbInformation, “校閲結果”
End If
End Sub
—
コードの注目ポイントを噛み砕いて解説!
初心者の方でも「なぜこのコードが必要なのか」がスッキリわかるように、大切なポイントを3つに絞って解説します。
① 「Option Explicit」のお作法
コードの1行目に書かれている `Option Explicit`。これ、実はプログラミングの「安全ベルト」です。
これを書いておくと、変数(データを入れる箱)の名前をうっかりタイポ(打ち間違い)したときに、VBAが「おいおい、そんな名前の変数知らないよ!」とエラーで教えてくれます。必ず書くクセをつけましょう。
② 文書の「段落」を上から順に舐める(For Each構文)
WordVBAの真骨頂は、ドキュメントの構造をオブジェクトとして捉えられる点です。
`For Each tgtParagraph In ActiveDocument.Paragraphs` は、日本語に訳すとこんな感じです。
> 「アクティブな文書の中にあるすべての段落(Paragraphs)を、上から順番に『tgtParagraph』という変数に入れて、最後の段落まで同じ作業を繰り返してね!」
このループの仕組みさえ理解できれば、Wordの自動化の8割はマスターしたも同然です。
③ 「一旦リセットする」という実務的な気づき
コードの途中で `ActiveDocument.Content.HighlightColorIndex = wdNoHighlight` という行があります。
これ、地味ですが実務では超重要です。
もしこれを入れないと、「あ、ここ直した!」と思ってフォントサイズを直しても、さっき塗った黄色いハイライトがそのまま残り続けてしまいます。
「処理を始める前に、まずは画面をキレイにまっさらにする」という発想は、プロのエンジニアが好む美しい実装スタイルです。
—
さあ、実際に動かしてみよう!
1. テストとして、Wordの新規文書に適当な文章をいくつか入力し、一部の段落だけフォントサイズを「12ポイント」や「9ポイント」など、バラバラに変えてみてください。
2. 先ほどコードを書いたVBE画面に戻り、F5キー(または上部の再生ボタン▶)を押してマクロを実行します。
3. どうですか? 規定外のサイズになっている段落だけが、見事にピカッと黄色くハイライトされたはずです!
—
陥りやすいエラーと対処法
最後に、初心者のうちによくある「あれ?」というポイントをシェアしておきますね。
- エラー:「オブジェクト変数または With ブロック変数が見つかりません。」
- → 大抵の場合、変数のスペルミスか、`Set` が必要なところで忘れているケースです。`Option Explicit` を入れておけば大体防げます。
- 「全部の文字が同じサイズなのにハイライトされる……」
- → Wordのフォントサイズは、時に「10.5ポイント」と設定したつもりでも、内部的に「10.45」などの微妙な数値になっていることがあります。厳密な一致(`=`)ではなく、許容誤差を設けるなどの応用もゆくゆくはできるようになると、さらにプロっぽくなりますよ。
—
おわりに
お疲れ様でした!
「Wordの中身をループで巡回し、条件に合うものを探して装飾する」という、実務でそのまま使える強力なプログラムが完成しました。
この基本の型(テンプレート)を応用すれば、「特定のキーワードが含まれる段落を赤字にする」「特定のスタイル以外を強制的に修正する」といった、あなただけのオリジナル校閲ツールが無限に作れるようになります。
ご自身の業務をラクにするために、ぜひ今日のコードをカスタムして遊んでみてくださいね。
あなたのWord VBAライフの素晴らしい一歩目になれば幸いです!
