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

2011年7月29日

先日の東京勉強会 でいただいた質問への回答の続きです。

半角文字の見つけ方は「文書中の半角文字を数えて検索するマクロ」と「文書中の半角文字を数えて検索するマクロ(2)」とでご紹介しました。

今回は、全角文字の見つけ方です。

このマクロでできること

英語の文書中に日本語が混ざっていないかな?ということの判定をします。

CT方式にて翻訳をすると、文書中に半角文字と全角文字が混在しますので、最終チェックではこのようなマクロが欠かせません。

文書中の特定の半角文字以外を検索します。なので、厳密には全角文字を見つけるわけではありません。

全角文字を探すとなると、いろいろと条件を指定しないとできないように感じます。少なくとも今の私の技術力ではよくわかりません。

実用上は大丈夫であろう、という意味で、このマクロになっています。ちなみに、ギリシャ文字も検索されますよ。

どうぞお試しいただいて、何を検索するのか体験してみてください。

マクロ解説

検索する文字列に少し工夫があります。(10行目)

.Text = "[! -~^9^11^12^13]{1,}"

としています。

つまり、特定の半角文字(半角スペースからチルダまで)、タブ(^t)、ソフトリターン(^11)、ページ・セクション区切り(^12)、ハードリターン(^13)以外の文字を指定しています。

単純に「半角文字(半角スペースからチルダまで)以外」と指定すると、タブや改行記号の数まで数えてしまいますから。

マクロ


Sub 全角文字の検索()
  Dim myRange As Range
  Dim myAnswer As String
  Dim myCnt As Long
  Dim myMessage As String
  Dim myTitle As String

  Set myRange = ActiveDocument.Range(0, 0)
  With myRange.Find
    .Text = "[! -~^9^11^12^13]{1,}"
    .MatchWildcards = True
    Do While .Execute = True
      myCnt = myCnt + 1
    Loop
    If myCnt = 0 Then
      MsgBox "見つかりませんでした。"
      Exit Sub
    Else
      myRange.SetRange Start:=0, End:=0
      myMessage = "合計で" & myCnt & "箇所あります。" & vbCr _
            & "次を検索しますか?"
      myTitle = "全角文字の検索"

      Do While .Execute = True
        myRange.Select
        myAnswer = MsgBox(myMessage, vbYesNo, myTitle)
        Select Case myAnswer
          Case vbNo
            Exit Do
          Case vbYes
            Selection.Collapse wdCollapseEnd
        End Select
      Loop
    End If
  End With
End Sub

関連記事

メッセージボックスの目次

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

文書中の半角文字を数えて検索するマクロ(2)

第1回ワードマクロ勉強会 in 東京 目次

コメント

2. Re:2バイト文字検索
>内田明子さん

コメントをどうもありがとうございます。
ご無沙汰しております!

簡単なマクロですが、以下の記事をご覧ください。

【コード】全角文字を検索するWordマクロ(Symbolフォントを除外)

こんな感じでどうでしょうか?
新田順也☆ワードプログラマー 2015-07-23 09:45:21
返信する
1. 2バイト文字検索
ご無沙汰しております。内田です。

またまたご相談がありまして、コメントさせて頂きます。(ずいぶん昔の記事を掘り起こしてきました。)

この新田さんのマクロを、2バイト文字検索に応用できませんか?いままでこちらのフリーウェアを使っていたのですが、↓
http://www.vector.co.jp/soft/win95/writing/se375946.html
Word 2010に対応していません・・・

用途は、英訳時のチェックで、全角文字の検索をしているのですが、symbolフォントで正しく入力されているギリシャ文字は検索対象外としたいのです。

お時間のあるときで良いので、ご教示頂ければ、とてもありがたく存じます。
内田明子 2015-07-17 10:51:32

-コード
-, ,