【Word VBA】カーソル位置の段落の蛍光ペンをすべて解除するWordマクロ

2011年6月19日

今回は、カーソルが置かれている段落の蛍光ペンを削除するマクロです。

私の翻訳方式(上書き翻訳)だと、蛍光ペンでやたらと色がつきます。

今は、一括置換で複数の色を使って「置換した用語の種類」によって蛍光ペンの色を変えています。

また、用語の並べ替えの最中にも種類により蛍光ペンの色を自動で切り替えています。

そんなわけで、非常にカラフルな文書を作っているわけです。

それを消すためのマクロです。

たとえば、以下のように2段落目にカーソルがあるとします。
(例文は相変わらずひねりがなく単調ですみません)

ここで実行すると、2段落目だけ蛍光ペンが解除されます。

カーソルの位置は変わりません。

このマクロでできることと想定する使い方

カーソルが置かれた段落の蛍光ペンをすべて解除します。
色の指定はできませんので、どの蛍光ペンの色であっても解除されます。

私の翻訳文は、蛍光ペンがついているということは、作成中であることを示しています。
(原文には蛍光ペンが使われていないという前提ですよ、当然)

よって、見直しの段階で、文章が完成した段落から、順番に蛍光ペンを消していきます。

これもキーボードに割り当てて使っていきます。

少しずつ蛍光ペンが消えていく感じが、非常に気持ちのいいマクロです。

マクロの解説

文字列を選択するというと、Selectionオブジェクトを思い浮かべるのですが、これは、視覚的に美しくありません。

Selectionオブジェクトは、常にカーソルの移動(選択範囲の変化)を伴います。

よって、画面がちらつくような感じでカーソルの移動が一瞬見えたりします。

私はカーソルの移動や選択範囲が見えるのがいやなので、Rangeオブジェクトを用いました。

なお、文字列を選択するのには、Expandメソッドを使います。

選択範囲の単位を示すのは、 Unit:=wdParagraph というオプションです。

これを Unit:=wdSentence に変更すれば、文章が蛍光ペンの解除の処理対象になりますね。

また、6行目に示したところが蛍光ペンを解除する部分です。

改造するとすれば、マクロ(2)の6行目のように、フォントの色を自動に戻すこともできますね。

マクロ(1)


Sub MWM_Paragraph_NoHighLight()
  Dim myRange As Range
  Set myRange = Selection.Range
  With myRange
    .Expand Unit:=wdParagraph
    .HighlightColorIndex = wdNoHighlight
  End With
  Set myRange = Nothing
End Sub

マクロ(2)


Sub MWM_Paragraph_FontColorAuto()
  Dim myRange As Range
  Set myRange = Selection.Range
  With myRange
    .Expand Unit:=wdParagraph
    .Font.ColorIndex = wdAuto
  End With
  Set myRange = Nothing
End Sub

-コード
-, , ,