2017年10月8日追記 本記事にはSymbolフォントの文字入力で間違った記述があります。 文字入力方法の修正内容を以下の記事でご確認ください。 【コード】こうすればできる!!シンボルフォントを検索するWordマクロ(4)
「Symbolフォントのギリシャ文字を蛍光ペンで着色するマクロ」に関連した記事です。
少しだけ細かく説明いたします。
<目次>
マクロのポイント(上記記事のコードを後半に掲載しました)
.Replacement.Text = ""
上記のとおり、置換後の文字列を空欄にしてあります。
今回のように蛍光ペンで着色をしたり、書式を変更する場合には、文字列を入れずに置換ができます。
参考情報ですが、書式を指定せずに置換後の文字列を空欄にした場合には、検索する文字列の「削除」になりますね。
さて、以下のように「検索する文字列」と「置換後の文字列」を同じものをいれても、書式の変更の場合はできますね。
.Text = ChrW(i) .Replacement.Text = ChrW(i)
ただ、今回は、あえて上記の通りにはしておりません。
置換後の文字列に文字を入力すると、書式だけではなく文字列の入力を伴います。
実は、上記のようにSymbolフォントを置換後の文字列に使用すると、文字化けしてしまうことがあります。
置換後の文字列を設定すると、文字を入力します。そのときに入力するのは「Symbolフォント」のギリシャ文字の文字コードなのですね。
標準フォントがMS 明朝とCentury の組み合わせの場合、これらに入力した文字コードに対応するものがなくて以下のように文字化けしてしまいます。
フォントの種類をSymbolに変換すると、以下のように正常な状態に戻ります。文字コードとしての情報は持っているのですが、表示形式が間違っているのですね。
「Symbolフォントのギリシャ文字を入力するマクロ」でも同様の説明をいたしました。
というわけで、文字列の入力はせずに、蛍光ペンの着色だけをするために、置換後の文字列を空欄にしました。
マクロ
Sub Symbol_Greece_Check() Dim i As Long '文字コード用 Dim myRange As Range 'Rangeオブジェクト Dim myHighLight As String '蛍光ペンの設定の保存用 Dim nCount As Integer '見つけたか文字種の数 Dim myMessage As String 'メッセージ '蛍光ペンの設定 myHighLight = Options.DefaultHighlightColorIndex Options.DefaultHighlightColorIndex = wdYellow 'Rangeオブジェクトの設定 Set myRange = ActiveDocument.Range(0, 0) 'シンボルフォントのギリシャ文字を黄色の蛍光ペンで着色 For i = 61505 To 61562 If i >= 61531 And i <= 61536 Then GoTo Proc_Skip myRange.SetRange Start:=0, End:=0 'ギリシャ文字を検索して黄色に着色 With myRange.Find .Text = ChrW(i) .Replacement.Text = "" .Replacement.Highlight = True .Wrap = wdFindStop .Forward = True .Execute If .Found = True Then .Execute Replace:=wdReplaceAll nCount = nCount + 1 End If End With Proc_Skip: Next i If nCount > 0 Then myMessage = StrConv(nCount, vbWide) & "種類のSymbolフォントのギリシャ文字を着色しました。" Else myMessage = "Symbolフォントのギリシャ文字は見つかりませんでした。" End If MsgBox myMessage, vbInformation, "ギリシャ文字チェック" Options.DefaultHighlightColorIndex = myHighLight Set myRange = Nothing End Sub