この記事を新しいサイトに転記しました
----------------------------------------
先日の水野麻子さんのブログに、「Symbolフォントは危険! 」という記事がありました。
Symbolフォントは、ワードで検索が難しいだけではなく、エディターソフトで文字化けしてしまうんですね。
今まで私はエディターソフトで明細書を書いたことがなかったのであまり気にしていませんでした。
ただ、シンボルフォントの文字を、検索・置換ダイアログボックスの「検索する文字列」などに入力すると文字化けして困ったなとは思っていました。
つまりテキスト表示できないんですね。
どちらにしろ、怖いですね。
これからは対策が必要です。。。
▼ワードの通常の検索ではSymbolフォントは検索できない!!
以下の文字があります。
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
これは、ワードのメニューの[挿入(I)] > [記号と特殊文字(S)...] のダイアログ画面から入力したものをコピーしたものです。
ちなみに、これをワードにコピーしても、Symbolフォントにはなりません!!
アメブロのブログ記事を書く欄に記入した段階で、別フォントに切り替わってしまったのでしょうか。。。
ますます、Symbolフォントの難しさを感じます。
実験する場合には、ご自身でメニューの[挿入(I)] > [記号と特殊文字(S)...] から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
▼関連記事
・変数の宣言を強制する「Option Explicit」の設定