今日、水野麻子さんのブログに「MS明朝とCenturyは「同じ」フォント!? 」という記事がありました。
これ、やっかいですね。
使用中のフォントの種類を検索するマクロを作ってみましたが、最初訳がわからなくて手こずりました。
僕が最初に作ったマクロは、「利用可能なフォント種類のうち、選択されている文章中で使われている場合には、そのフォントの種類を書き出す」という処理をしています。
しかし、文書中に使用されている(表示されている)フォントが使用中のフォントとして認識されてませんでした。
理由は、水野麻子さんが説明されているとおりなので、僕はあえて説明しませんが、不可解なことがあるものです。
そんなわけで、水野麻子さんの見解もふまえて、検索結果の表示に一工夫をしたプログラムの紹介です。
<目次>
使い方
まず、ご登録を。
マクロの登録方法は、水野麻子さんのこちらの記事をご覧ください。
実行すると、以下のような検索結果が表示されます。
上記のような、使用中のフォントが検出されない事態への対策として、以下のようにしました。
検索結果にて、標準のスタイルに設定されているフォント名のあとに (標準) と追記して表示しています。
標準のフォントに関しては、「使用されているとき」も「使用されていないとき」も、常に使用中のフォントとして表示するようになっています。
検索結果は、参考情報を示すものとご理解ください。検索されていないフォントもあるかも。
このマクロを使うときには、その点にご注意いただければいいかと思います。
不思議な結果が表示されたら、ご一報ください。
調べてみます。
プログラム
Sub フォントの種類を探す() Dim myFont(1 To 2) As String Dim myFontInUse As String Dim aFont As Variant Dim i As Integer On Error GoTo Name_Check_Error '標準スタイルのフォント確認 With ActiveDocument.Styles(wdStyleNormal).Font myFont(1) = .NameFarEast '日本語のフォント myFont(2) = .NameAscii '英数字のフォント End With For i = 1 To 2 myFontInUse = myFontInUse & vbCr & " " & myFont(i) & "(標準)" Next i For Each aFont In FontNames If aFont = myFont(1) Or aFont = myFont(2) Then GoTo NextFont End If With ActiveDocument.Content.Find .ClearFormatting .Text = "" .Font.Name = aFont .Execute Format:=True If .Found = True Then myFontInUse = myFontInUse & vbCr & " " & aFont End If End With NextFont: Next aFont MsgBox "この文書では" & myFontInUse & vbCr & "が使われています。", _ vbInformation, "使用中のフォントの種類" On Error GoTo 0 Exit Sub Name_Check_Error: MsgBox "エラーが発生しました。終了します。" End Sub
コメント
-
6. Re:Re:Re:Re:Re:フォントごとに何文字か?
>tomkさん
ご連絡ありがとうございました。
思いついたときで結構です。
またご連絡ください。