【Word VBA】文書中の半角文字を数えて検索するWordマクロ

2011年7月25日

先日の東京のマクロ勉強会 の参加者の方からのご要望で作ってみました。

一括置換を用いて翻訳をする場合に、英語から日本語にする場合、時々、半角のまま残っているスペースがあります。

それを簡単に探し出すマクロです。

このマクロでできること

文書中の半角文字を探します。

ワイルドカードを用いて、以下の図中の記号を検索します。

半角スペースから、~(チルダ )までです。

半角全角

文書中にあるこれら記号のかたまりの数を数えて、さらに、現在のカーソル位置から下に向かって検索をすすめます。

半角全角

なお、検索は文書の最後で中止します。

文頭から検索する場合には、カーソルを文頭に移動してから実行してください。

解説

ワイルドカードで検索をします。

検索する文字列は、"[ -~]{1,}" としています。半角スペースからチルダまでの1文字以上の文字列ですね。

マクロ


Sub 半角文字の検索()
  '半角英数字記号を探します。
  Dim myRange As Range
  Dim myOriginalRange As Range
  Dim myAnswer As String
  Dim myCnt As Long
  Set myOriginalRange = Selection.Range
  Set myRange = ActiveDocument.Range(0, 0)
  With myRange.Find
    .Text = "[ -~]{1,}"
    .MatchWildcards = True
    Do While .Execute = True
      myCnt = myCnt + 1
    Loop
    If myCnt = 0 Then
      MsgBox "見つかりませんでした。"
      Exit Sub
    Else
      myRange.SetRange myOriginalRange.Start, myOriginalRange.End
      Do While .Execute = True
        myRange.Select
        myAnswer = MsgBox("合計で" & myCnt & "個あります。" & vbCr _
                  & "次を検索しますか?", vbYesNo, "半角文字の検索")
        Select Case myAnswer
          Case vbNo
            Exit Do
          Case vbYes
            Selection.Collapse wdCollapseEnd
        End Select
      Loop
    End If
  End With
End Sub

-コード
-,