なぜVBAで「二重取り消し線」を扱う必要があるのか
実務において、Word文書の校正や進捗管理を行う際、「修正済み」や「無効」を示すために二重取り消し線を使うことは非常に多いです。しかし、大量のドキュメントで特定のキーワードに対して一括で二重取り消し線を引いたり、条件に応じて動的に線を付け外ししたい場合、手作業ではミスが起きやすく、非常に非効率です。VBAを介してこれを制御することで、ヒューマンエラーを防ぎ、ドキュメントの品質を一律に保つことが可能になります。
基礎知識:Wordの「フォント」オブジェクト
Word VBAにおいて、文字の装飾は「Font」オブジェクトを通じて行います。通常、取り消し線(1本線)には「StrikeThrough」プロパティを使用しますが、二重取り消し線を制御するには「DoubleStrikeThrough」プロパティを使用します。このプロパティに「True」を代入すれば線が引かれ、「False」を代入すれば解除されるという単純な論理で動作します。
実装:Word VBAによる二重取り消し線の適用
VBAで二重取り消し線を引くには、対象となる「Range(範囲)」または「Selection(選択範囲)」に対して、FontオブジェクトのDoubleStrikeThroughプロパティを指定するだけです。検索機能と組み合わせることで、特定の文字列を瞬時に二重線に書き換えるといった応用も可能です。
サンプルプログラム:選択範囲に二重取り消し線を引くコード
以下のコードを標準モジュールに貼り付けて実行してください。選択した文字列に対して二重取り消し線を適用します。
Sub ApplyDoubleStrikeThrough()
‘ 選択範囲がない場合は処理を終了
If Selection.Type = wdSelectionIP Then
MsgBox “対象の文字列を選択してください。”, vbExclamation
Exit Sub
End If
‘ 選択範囲のフォントプロパティに二重取り消し線を設定
‘ Trueで適用、Falseで解除されます
With Selection.Font
.DoubleStrikeThrough = True
End With
MsgBox “選択範囲に二重取り消し線を引きました。”, vbInformation
End Sub
‘ 応用:指定した単語をすべて二重取り消し線にする例
Sub FindAndDoubleStrikeThrough()
Dim targetText As String
targetText = “修正対象” ‘ ここに二重線を引きたい文字を入力
With ActiveDocument.Content.Find
.Text = targetText
.Format = False
.Forward = True
‘ 文字が見つかる限り繰り返す
Do While .Execute
.Parent.Font.DoubleStrikeThrough = True
Loop
End With
End Sub
応用・注意点
1. 解除の制御:サンプルコードの「True」を「False」に変更すれば、逆に二重取り消し線を一括解除するマクロになります。レビュー作業の完了時に非常に便利です。
2. スタイルの競合:Wordには「取り消し線(1本)」と「二重取り消し線」の両方を同時に適用できてしまう設定が存在します。VBAで制御する際は、予期せぬ表示を防ぐために、一括処理の前に一度「.StrikeThrough = False」として、1本線をクリアしてから二重線を適用するような論理を組むと、より堅牢なプログラムになります。
3. 操作の取り消し:VBAによる操作は「元に戻す(Ctrl+Z)」が機能しない場合があります。重要な文書で実行する際は、必ずバックアップを取ってからテストを行ってください。
