【コード】こうすればできる!!シンボルフォントを検索するWordマクロ

——————————————————————————–
間違いがあったので、こちらの記事で修正版を紹介しています。
——————————————————————————–

先日の水野麻子さんのブログに、「Symbolフォントは危険! 」という記事がありました。

Symbolフォントは、ワードで検索が難しいだけではなく、エディターソフトで文字化けしてしまうんですね。

今まで私はエディターソフトで明細書を書いたことがなかったのであまり気にしていませんでした。

ただ、シンボルフォントの文字を、検索・置換ダイアログボックスの「検索する文字列」などに入力すると文字化けして困ったなとは思っていました。

つまりテキスト表示できないんですね。

どちらにしろ、怖いですね。

これからは対策が必要です。。。

ワードの通常の検索ではSymbolフォントは検索できない!!

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

これは、ワードのメニューの[挿入(I)] > [記号と特殊文字(S)…] のダイアログ画面から入力したものをコピーしたものです。

ちなみに、これをワードにコピーしても、Symbolフォントにはなりません!!

アメブロのブログ記事を書く欄に記入した段階で、別フォントに切り替わってしまったのでしょうか。。。

ますます、Symbolフォントの難しさを感じます。

実験する場合には、ご自身でメニューの[挿入(I)] > [記号と特殊文字(S)…] からSymbolフォントをご入力ください。

Symbolフォント

これを、通常の検索ダイアログ画面で、フォントの書式設定をして、Symbolフォントで検索するのですが、一つもひっかかりません。

Symbolフォント

やっかいですね。

というわけで、ひとまず水野麻子さんからの以下のコメントにて教えていただいた文字コードを利用して、以下のSymbolフォントの文字列をワードで検索するマクロです。

(以下、新田強調追加)

半角アルファベットにシンボルフォントをかけた場合のギリシャ文字コードを秀丸で調べたら、
大文字0xF041(10進換算61505)~0xF05A(61530)、小文字0xF061(61537)~ 0xF07A(61562)でした。

半角アスキーの範囲をChr、ユニコードの範囲をChrW関数で組み合わせて指定することができれば、シンボルフォントのギリシャ文字を挟む場合にも対応できるかもしれません。

プログラム文中での、上記数字の使い方をご覧ください。

マクロでSymbolフォントの文字コード検索

プログラムの説明は省きますが、ご自身でご入力されたSymbolフォントの文字列が、ピンクに着色されることをご確認ください。


Sub Symbolフォント探し()

 Dim SS, SE As Long 'カーソル位置の保存用
 
 '画面更新非表示
 Application.ScreenUpdating = False
 
 'カーソルの現在位置を保存
 SS = Selection.Start
 SE = Selection.End
       
 'シンボルフォントのギリシャ文字をピンクの蛍光ペンで着色
 For i = 61505 To 61562

  If i >= 61531 And i <= 61536 Then GoTo Proc_Skip
 
  Selection.Find.ClearFormatting
  Selection.Find.Replacement.ClearFormatting
  With Selection.Find
   .Text = ChrW(i)
   .Forward = True
   .Wrap = wdFindContinue
   .Format = False
   .MatchCase = False
   .MatchWholeWord = False
   .MatchByte = False
   .MatchAllWordForms = False
   .MatchSoundsLike = False
   .MatchWildcards = False
   .MatchFuzzy = True
   .Execute
  End With
  
  Do While Selection.Find.Found = True
   Selection.Range.HighlightColorIndex = wdPink
   Selection.Find.Execute
  Loop
   
Proc_Skip:
 Next i

 '▼検索・置換条件の初期化
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 With Selection.Find
  .Text = ""
  .Replacement.Text = ""
  .Forward = True
  .Wrap = wdFindContinue
  .Format = False
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchWildcards = False
  .MatchFuzzy = True
  .Execute
 End With
 
 'カーソルの位置を戻す
 Selection.Start = SS
 Selection.End = SE

 '画面更新表示
 Application.ScreenUpdating = True

End Sub

トップへ戻る