以前の記事「【コード】様々な半角ハイフンを通常の半角ハイフンに置換するマクロ」と「【コード】様々な半角ハイフンを通常の半角ハイフンに置換するマクロ(その2)」で、Wordには複数の種類の文字コードによる偽ハイフンがあるということを説明し、それらを通常の半角ハイフンに置換する仕組みを紹介しました。
最近、ブログ読者の方から別のハイフン(Soft Hyphen)があることを教えていただきました。
また、ハイフンを探しているうちに、Wordで使われる「任意指定のハイフン」が変換の対象外になっていることに気がつきました。
この機会に、合計で11種類のハイフンを扱えるように過去のマクロを改良してみます。
Wordで動く翻訳チェックソフト「色deチェック」で、上記2つのハイフンもチェックできるように次のバージョンで修正します。
<目次>
このマクロでできること
11種類の偽ハイフンを通常の半角ハイフンに置換します。
置換箇所を明るい緑色で着色します。
マクロの解説
19行目のように、検索する文字列に、ChrW(&HAD) (ソフトハイフン)と ^- (任意指定のハイフン)とを追加しました。
ソフトハイフンの場合、VBEではUnicodeの文字を表示できないため、文字コードに基づいて表示しています。
以下のように、[記号と特殊文字]ダイアログボックスにて、Soft HyphenのUnicode(16進)の文字コードを探します。
VBEで入力すると、ChrW(&H00AD) が ChrW(&HAD) のように自動的に変換されます。
マクロ
Sub 様々な半角ハイフンを通常の半角ハイフンに置換するマクロ3() Dim myRange As Range Dim strFind As String '検索する文字列 Dim strRepl As String '置換後の文字列 Dim myColor As String '現在の蛍光ペンの色を保存 myColor = Options.DefaultHighlightColorIndex '蛍光ペンの色を黄色に設定 Options.DefaultHighlightColorIndex = wdBrightGreen '検索する文字列:様々なハイフンの定義11種類 strFind = "[" & ChrW(&H2010) & ChrW(&H2011) & _ ChrW(&H2012) & ChrW(&H2013) & _ ChrW(&H2014) & ChrW(&H2015) & _ ChrW(&H2043) & ChrW(&H2212) & _ ChrW(&HAD) & "^~" & "^-" & "]" '置換後の文字列:通常の半角ハイフン strRepl = ChrW(&H2D) '一括置換を実行(「検索と置換」ダイアログボックスの設定) With Selection.Find .Text = strFind '検索する文字列 .Replacement.Text = strRepl '置換後の文字列 .Replacement.Highlight = True .Forward = True .Wrap = wdFindStop .Format = True '書式の設定をオン .MatchCase = False '大文字と小文字の区別する .MatchWholeWord = False '完全に一致する単語だけを検索する .MatchAllWordForms = False '英単語の異なる活用形を検索する .MatchSoundsLike = False 'あいまい検索(英) .MatchFuzzy = False 'あいまい検索(日) .MatchByte = False '半角と全角を区別する .MatchWildcards = True 'ワイルドカードを使用する .Execute Replace:=wdReplaceAll End With '蛍光ペンの色を元に戻す Options.DefaultHighlightColorIndex = myColor 'myRangeを解放 Set myRange = Nothing End Sub