Word VBAで「段落番号がバラバラ!」という悪夢を強制終了させる技術
こんにちは。自動化の世界へようこそ。
Wordを使っていると、途中で段落番号が「1, 2, 1, 2…」と勝手にリセットされたり、なぜか番号が飛んだりして、修正のために一つずつ右クリックして「番号の再開」を繰り返した経験はありませんか?
あれは、Wordの段落オブジェクトが持つ「リストレベル」と「リストテンプレート」の内部管理が、複雑な編集過程で迷子になっている状態です。手動で直すのは、いわば泥沼。VBAを使えば、この連番を「強制的に再定義」して、一瞬で秩序を取り戻すことができます。
今日は、Word VBAの初歩を踏み出しつつ、この「連番の闇」を攻略する極意をお伝えします。
—
1. なぜ「段落番号」は狂うのか?
Wordの段落番号は、実は単なる「テキスト」ではありません。Word内部では「リスト」という高度なオブジェクトとして管理されています。
あなたがEnterキーを押すたびに、Wordは「前の段落のスタイルを引き継ぐべきか?」「リストを継続すべきか?」を判断していますが、複雑な文書編集を行うと、この判断ロジックが衝突を起こします。
これを修正する唯一の近道は、「対象の段落群に対して、リストの番号を最初から振り直せ」とVBAで直接命令を下すことです。
—
2. 魔法のコード:連番強制リセットスクリプト
このコードは、選択した範囲(または文書全体)にある段落番号を、1から強引に再開させるものです。
Sub ForceResetListNumbering()
‘ 文書内の全段落を走査し、リスト番号を強制的にリセットする
Dim para As Paragraph
‘ エラー回避のため、画面更新を停止して処理速度を向上させる
Application.ScreenUpdating = False
‘ 文書のすべての段落をループ処理
For Each para In ActiveDocument.Paragraphs
‘ その段落にリスト(段落番号)が設定されているか判定
If para.Range.ListFormat.ListType = wdListListNumOnly Or _
para.Range.ListFormat.ListType = wdListSimpleNumbering Then
‘ リスト番号を「1」から強制的に再開させる命令
para.Range.ListFormat.ApplyNumberDefault
End If
Next para
‘ 画面更新を再開
Application.ScreenUpdating = True
MsgBox “全段落番号の強制リセットが完了しました!”, vbInformation
End Sub
コードの解説:ここが「プロの視点」
- `Application.ScreenUpdating = False`: これを入れることで、処理中の画面のチラつきを抑え、実行速度を劇的に向上させます。大規模な文書ほど、この一行が効いてきます。
- `ListFormat.ListType`: 全ての段落に命令を出すのではなく、「リスト形式のものだけ」をフィルタリングして処理しています。これにより、見出しや本文を壊さずに番号だけを修正できます。
- `ApplyNumberDefault`: これが今回の切り札です。現在のリスト形式を維持したまま、番号のカウントだけをリセットします。
—
3. 初心者が陥りやすい罠と対策
罠1:コードをどこに書けばいいかわからない
1. Wordを開き、`Alt + F11` を押してください。VBAエディタが開きます。
2. メニューの「挿入」から「標準モジュール」をクリック。
3. 出てきた白い画面に上記のコードをコピペしてください。
4. あとは `F5` キーを押すだけです。
罠2:実行しても直らない!
原因の多くは「スタイル」の干渉です。もし上記コードで直らない場合、その段落が「手動設定」ではなく「スタイル機能」で深く制御されている可能性があります。その場合は、一度その段落を選択して「標準」スタイルに戻してから実行してみてください。
—
4. ステップアップ:さらに高みを目指すなら
このスクリプトをマスターすれば、あなたはもう「マクロの記録」をただ貼り付けるだけの初心者ではありません。「オブジェクト(Paragraph)を特定し、プロパティ(ListFormat)を操作する」という、VBAの核心に触れたのです。
今後は、「特定のスタイル名がついている段落だけをリセットする」といった条件分岐を加えることで、さらに高度な文書管理が可能になります。
Word VBAは、あなたの代わりに何万回もの「右クリック」を代行してくれる強力な相棒です。この小さな成功体験を足がかりに、ぜひ次の自動化へ挑戦してください。
「ここをクリアすれば、Word VBAの基本はバッチリですよ」。
また次の自動化の現場でお会いしましょう。
