先日の東京勉強会 でいただいた質問への回答の続きです。
半角文字の見つけ方は「文書中の半角文字を数えて検索するマクロ」と「文書中の半角文字を数えて検索するマクロ(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. 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