2014年8月7日 追記 応用版を公開しました。 【コード】書式を蛍光ペンで着色するWordマクロ(その2)
お客様から、「上付き文字や下付き文字をマーキングできないでしょうか?」という問い合わせをいただきました。
書式のチェックに役立ちそうですね。
このような場合は、蛍光ペンで着色すると見やすくてよいと思います。
<目次>
このマクロでできること
本文中の特定の文字書式(上付き、下付き、太字、一重下線)を蛍光ペンでマーキングします。
ヘッダーやコメントなどの文字書式は処理対象外です。
マクロの解説
Rangeオブジェクトを用いたマクロです。
「検索と置換」ダイアログボックスの設定項目に沿ったプロパティを設定します。
項目名で示した通り、検索オプションはオフにしました。
蛍光ペンの色が「色なし」の場合には、強制的に黄色に設定します。
それ以外の場合、選択されている色でマーキングします。
4つのマクロを紹介しました。検索する文字列の書式が異なります。
書式情報を検索条件にする場合には、.Format プロパティをオンにします。(30行目)
「検索する文字列」と「置換後の文字列」とは、両方とも空欄です。書式を検索したり、書式を置換後の文字列にあてはめる場合、文字列を入れる必要はありません。
マクロ1(上付き)
Sub 蛍光ペン_上付き() Dim myRange As Range Dim myColor As String '蛍光ペンの色 '----------------------------------- '蛍光ペンの色の設定 '----------------------------------- '現在選択されている蛍光ペンの色が「色なし」の場合 'マーカー用の蛍光ペンの色を一時的に「黄色」に設定する If Options.DefaultHighlightColorIndex = wdNoHighlight Then '現在選択されている蛍光ペンの色(「色なし」です)の保存 myColor = Options.DefaultHighlightColorIndex '蛍光ペンの色を黄色に設定 Options.DefaultHighlightColorIndex = wdYellow End If '----------------------------------- 'Rangeオブジェクトの設定・置換 '----------------------------------- Set myRange = ActiveDocument.Range(0, 0) With myRange.Find .Text = "" '検索する文字列 .Font.Superscript = True '検索する文字列の書式:上付き .Replacement.Text = "" '置換後の文字列 .Replacement.Highlight = True '置換後の文字列の蛍光ペン .Forward = True .Wrap = wdFindStop .Format = True '書式:オン .MatchCase = False '大文字と小文字の区別する .MatchWholeWord = False '完全に一致する単語だけを検索する .MatchByte = False '半角と全角を区別する .MatchAllWordForms = False '英単語の異なる活用形を検索する .MatchSoundsLike = False 'あいまい検索(英) .MatchFuzzy = False 'あいまい検索(日) .MatchWildcards = False 'ワイルドカードを使用する .Execute Replace:=wdReplaceAll 'すべてを置換する を実行 End With '----------------------------------- '蛍光ペンの色の再設定 '----------------------------------- If myColor <> "" Then Options.DefaultHighlightColorIndex = myColor End If '----------------------------------- 'Rangeオブジェクトの解放 '----------------------------------- Set myRange = Nothing End Sub
マクロ2(下付き)
Sub 蛍光ペン_下付き() Dim myRange As Range Dim myColor As String '蛍光ペンの色 '----------------------------------- '蛍光ペンの色の設定 '----------------------------------- '現在選択されている蛍光ペンの色が「色なし」の場合 'マーカー用の蛍光ペンの色を一時的に「黄色」に設定する If Options.DefaultHighlightColorIndex = wdNoHighlight Then '現在選択されている蛍光ペンの色(「色なし」です)の保存 myColor = Options.DefaultHighlightColorIndex '蛍光ペンの色を黄色に設定 Options.DefaultHighlightColorIndex = wdYellow End If '----------------------------------- 'Rangeオブジェクトの設定・置換 '----------------------------------- Set myRange = ActiveDocument.Range(0, 0) With myRange.Find .Text = "" .Font.Subscript = True '検索する文字列の書式:下付き .Replacement.Text = "" .Replacement.Highlight = True '置換後の文字列の蛍光ペン .Forward = True .Wrap = wdFindStop .Format = True '書式:オン .MatchCase = False '大文字と小文字の区別する .MatchWholeWord = False '完全に一致する単語だけを検索する .MatchByte = False '半角と全角を区別する .MatchAllWordForms = False '英単語の異なる活用形を検索する .MatchSoundsLike = False 'あいまい検索(英) .MatchFuzzy = False 'あいまい検索(日) .MatchWildcards = False 'ワイルドカードを使用する .Execute Replace:=wdReplaceAll 'すべてを置換する を実行 End With '----------------------------------- '蛍光ペンの色の再設定 '----------------------------------- If myColor <> "" Then Options.DefaultHighlightColorIndex = myColor End If '----------------------------------- 'Rangeオブジェクトの解放 '----------------------------------- Set myRange = Nothing End Sub
マクロ3(太字)
Sub 蛍光ペン_太字() Dim myRange As Range Dim myColor As String '蛍光ペンの色 '----------------------------------- '蛍光ペンの色の設定 '----------------------------------- '現在選択されている蛍光ペンの色が「色なし」の場合 'マーカー用の蛍光ペンの色を一時的に「黄色」に設定する If Options.DefaultHighlightColorIndex = wdNoHighlight Then '現在選択されている蛍光ペンの色(「色なし」です)の保存 myColor = Options.DefaultHighlightColorIndex '蛍光ペンの色を黄色に設定 Options.DefaultHighlightColorIndex = wdYellow End If '----------------------------------- 'Rangeオブジェクトの設定・置換 '----------------------------------- Set myRange = ActiveDocument.Range(0, 0) With myRange.Find .Text = "" .Font.Bold = True '検索する文字列の書式:太字 .Replacement.Text = "" .Replacement.Highlight = True '置換後の文字列の蛍光ペン .Forward = True .Wrap = wdFindStop .Format = True '書式:オン .MatchCase = False '大文字と小文字の区別する .MatchWholeWord = False '完全に一致する単語だけを検索する .MatchByte = False '半角と全角を区別する .MatchAllWordForms = False '英単語の異なる活用形を検索する .MatchSoundsLike = False 'あいまい検索(英) .MatchFuzzy = False 'あいまい検索(日) .MatchWildcards = False 'ワイルドカードを使用する .Execute Replace:=wdReplaceAll 'すべてを置換する を実行 End With '----------------------------------- '蛍光ペンの色の再設定 '----------------------------------- If myColor <> "" Then Options.DefaultHighlightColorIndex = myColor End If '----------------------------------- 'Rangeオブジェクトの解放 '----------------------------------- Set myRange = Nothing End Sub
マクロ4(一重下線)
Sub 蛍光ペン_太字() Dim myRange As Range Dim myColor As String '蛍光ペンの色 '----------------------------------- '蛍光ペンの色の設定 '----------------------------------- '現在選択されている蛍光ペンの色が「色なし」の場合 'マーカー用の蛍光ペンの色を一時的に「黄色」に設定する If Options.DefaultHighlightColorIndex = wdNoHighlight Then '現在選択されている蛍光ペンの色(「色なし」です)の保存 myColor = Options.DefaultHighlightColorIndex '蛍光ペンの色を黄色に設定 Options.DefaultHighlightColorIndex = wdYellow End If '----------------------------------- 'Rangeオブジェクトの設定・置換 '----------------------------------- Set myRange = ActiveDocument.Range(0, 0) With myRange.Find .Text = "" .Font.Underline = wdUnderlineSingle '検索する文字列の書式:一重下線 .Replacement.Text = "" .Replacement.Highlight = True '置換後の文字列の蛍光ペン .Forward = True .Wrap = wdFindStop .Format = True '書式:オン .MatchCase = False '大文字と小文字の区別する .MatchWholeWord = False '完全に一致する単語だけを検索する .MatchByte = False '半角と全角を区別する .MatchAllWordForms = False '英単語の異なる活用形を検索する .MatchSoundsLike = False 'あいまい検索(英) .MatchFuzzy = False 'あいまい検索(日) .MatchWildcards = False 'ワイルドカードを使用する .Execute Replace:=wdReplaceAll 'すべてを置換する を実行 End With '----------------------------------- '蛍光ペンの色の再設定 '----------------------------------- If myColor <> "" Then Options.DefaultHighlightColorIndex = myColor End If '----------------------------------- 'Rangeオブジェクトの解放 '----------------------------------- Set myRange = Nothing End Sub