【入門編】Word VBAで『オートコレクト』を制御する:誤変換を自動修正する辞書管理の自動化 – Word VBA解析バイブル

スポンサーリンク

こんにちは!マクロの記録ボタンを押すだけのステップから一歩抜け出し、「自分の手でWordを自在に操りたい」と願うあなたへ。

今回は、Word VBAの真骨頂とも言える「オートコレクト(自動修正)の動的制御」について、世界最高峰のアーキテクトの視点から魂を込めて解説します。

「特定の業界用語や社内用語を入力した瞬間、一瞬で正しい表記に変換させたい」
「プロジェクトが変わるたびに、自動修正の辞書をごっそり入れ替えたい」

そんな現場の切実な悩みを、`AutoCorrectEntries`コレクションを駆使してスマートに解決する方法を伝授しましょう。ここをクリアすれば、あなたのWord VBAスキルは間違いなく中級者の域に達します。さあ、一緒に扉を開けましょう!

1. なぜ「オートコレクト」をVBAで操るべきなのか?

Wordには、入力ミスを自動で直してくれる「オートコレクト」機能がありますよね。「お疲れ様です」と打つときに、わざわざ手動で直さなくてもいいアレです。

これを手動で登録しようとすると、「ファイル」>「オプション」>「文章校正」>「オートコレクトのオプション」と、暗い迷宮のようなメニューを何クリックもしなければなりません。しかも、プロジェクトごとに用語が変わるたびに、ポチポチ手作業で登録・削除するのはエンジニアのやる仕事ではありません。

「辞書そのものをプログラムで支配する」

これができれば、新プロジェクトが発足した瞬間に、専用の専門用語辞書をWordに一瞬でインストール(またはクリーンアップ)することが可能になります。

2. Wordオブジェクトモデルの急所:どこを叩くべきか?

Word VBAでオートコレクトを操作するためには、オブジェクト階層の頂点である `Application` オブジェクトから下っていきます。

ここで重要なのは、私たちが操作するのは「個別の文書(Document)」ではなく、Wordアプリケーション全体が保持しているグローバルな辞書であるという点です。

  • `Application.AutoCorrect` :オートコレクト全体を管理する司令塔
  • `.Entries` :登録されている単語のコレクション(辞書の束)

この `AutoCorrectEntries` コレクションに対して、新しく単語を追加(`Add`)したり、削除(`Delete`)したりする指示を出していきます。

3. 実践!プロジェクト用語を自動登録・削除するVBAコード

百聞は一見にしかず。現場でそのままコピペして使える、極上の実用コードをプレゼントしましょう。

このマクロを実行すると、特定のプロジェクト用キーワード(例: “vba” -> “Microsoft Visual Basic for Applications” など)が自動的にWordのオートコレクトに登録されます。

Sub ManageProjectAutoCorrect()
Dim acEntries As AutoCorrectEntries
Dim targetKey As String
Dim targetValue As String

‘ 司令塔となるAutoCorrectEntriesコレクションを取得
Set acEntries = Application.AutoCorrect.Entries

‘ ==========================================
同僚や自分を助ける!新規用語の登録処理
‘ ==========================================
targetKey = “vba”
targetValue = “Microsoft Visual Basic for Applications”

‘ 【重要】すでに同じキーが存在する場合のエラーを防ぐため、存在確認か削除を行う
On Error Resume Next
acEntries(targetKey).Delete ‘ 既存の同名エントリがあれば一旦削除
On Error GoTo 0

‘ オートコレクトに新しいエントリを追加
‘ ※Add メソッドの引数は (修正前の文字列, 修正後の文字列) です
acEntries.Add Name:=targetKey, Value:=targetValue

MsgBox “オートコレクトに ‘” & targetKey & “‘ を登録しました!”, vbInformation, “自動化完了”

Set acEntries = Nothing
End Sub

コードの急所解説

1. `On Error Resume Next` の理由
辞書に存在しないキー(単語)を `.Delete` しようとすると、Wordは容赦なく実行時エラーを吐いて止まります。「もしあれば消す、なければスルーする」という防衛的プログラミングが、プロのVBAでは絶対に必要なのです。
2. `Add` メソッドの構文
`Name` に「置き換え前の文字列」、`Value` に「置き換え後の文字列(正解の表記)」を指定します。ここを逆にすると大変なことになるので注意してくださいね。

4. 陥りやすい罠:プレーンテキストとリッチテキストの呪縛

ここで、少し踏み込んだ「プロの知見」を共有しておきます。

オートコレクトの `.Add` メソッドには、実はもう一つの顔があります。それは書式付き(リッチテキスト)の登録です。

もし `Value` に色付きの文字列や、特定のフォント、画像などが含まれる可能性がある場合、通常の `Add` メソッドではレイアウトが崩れたり、予期せぬエラーを引き起こすことがあります。

> 【シニアからのアドバイス】
> 文書内の選択範囲(Range)にあるリッチテキストをそのままオートコレクトに登録したい場合は、`AddRichText` メソッドという別の兵器を使います。

‘ 選択している文字列(書式やフォント付き)をそのままオートコレクトに登録する例
Sub RegisterRichTextAutoCorrect()
Dim rngTarget As Range
Set rngTarget = Selection.Range

‘ 選択範囲が空でないかチェック
If rngTarget.Text = “” Then
MsgBox “登録するテキストを選択してください。”, vbExclamation
Exit Sub
End If

‘ リッチテキストとして登録
Application.AutoCorrect.Entries.AddRichText Name:=”projlogo”, Range:=rngTarget

MsgBox “選択範囲の書式を含めて ‘projlogo’ として登録しました!”, vbInformation
End Sub

社内のロゴや特殊なフォントを使った定型句を、ショートカットキー感覚で呼び出せるこの手法は、ドキュメント作成のスピードを何倍にも跳ね上がらせます。

5. おわりに:ここをクリアすれば、Word VBAの基本はバッチリですよ

今回は、Word VBAを用いたオートコレクト(辞書管理)の自動化について解説しました。

一見地味に見える機能ですが、「アプリケーションの全体設定をコードから自在に書き換える」という感覚を掴むことができれば、Wordは単なるワープロソフトから、「あなた専属のドキュメント生成エンジン」へと姿を変えます。

エラーハンドリングの重要性や、オブジェクトのライフサイクルを意識しながらコードを書く楽しさ、少しずつ伝わったでしょうか?

日々の面倒な作業はVBAにすべて肩代わりさせて、あなたにしかできないクリエイティブな仕事に集中しましょう。それでは、次回の極限の知見でお会いしましょう!

タイトルとURLをコピーしました