【Word VBA】様々な半角ハイフンを通常の半角ハイフンに置換するWordマクロ(その2)

2014年11月22日

後に改良しました。16-08-22
【コード】様々な半角ハイフンを通常の半角ハイフンに置換するマクロ(その3)
【コード】様々な半角ハイフンを通常の半角ハイフンに置換するマクロ(その4)

以前の記事「【コード】様々な半角ハイフンを通常の半角ハイフンに置換するマクロ」で、Wordには8つの別の種類の文字コードによる偽ハイフンがあるということを説明し、それらを通常の半角ハイフンに置換する仕組みを紹介しました。

ところが、Wordには、文字コードではなくWordの機能として別のハイフンがあったのです!

それが、「改行をしないハイフン」です。

なお、改行しないハイフンに関しては、こちらの記事「改行をしないスペース/ハイフン 」をご覧ください。入力方法も含めわかりやすく説明されています。

ちなみに、翻訳品質管理ソフト「色deチェック 」では、「改行をしないハイフン」も含めて通常のハイフンに置換して比較できるようになっています。

このマクロでできること

9種類の偽ハイフンを通常の半角ハイフンに置換します。
置換箇所を明るい緑色で着色します。

マクロの解説

18行目のように、検索する文字列に、^~ を追加しました。

これが「改行をしないハイフン」を示す特殊文字です。

マクロ


Sub 様々な半角ハイフンを通常の半角ハイフンに置換するマクロ2()

  Dim myRange As Range
  Dim strFind As String '検索する文字列
  Dim strRepl As String '置換後の文字列
  Dim myColor As String
 
  '現在の蛍光ペンの色を保存
  myColor = Options.DefaultHighlightColorIndex

  '蛍光ペンの色を黄色に設定
  Options.DefaultHighlightColorIndex = wdBrightGreen
  
  '検索する文字列:様々なハイフンの定義9種類
  strFind = "[" & ChrW(&H2010) & ChrW(&H2011) & _
          ChrW(&H2012) & ChrW(&H2013) & _
          ChrW(&H2014) & ChrW(&H2015) & _
          ChrW(&H2043) & ChrW(&H2212) & "^~" & "]"
     
  '置換後の文字列:通常の半角ハイフン
  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

-コード
-, , ,