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

2016年8月22日

以前の記事「【コード】様々な半角ハイフンを通常の半角ハイフンに置換するマクロ」と「【コード】様々な半角ハイフンを通常の半角ハイフンに置換するマクロ(その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

-コード
-, , ,