Home » ワードマクロ・Word VBAの使い方 » フォント » 使われているフォント名一覧を出力するWordマクロ-Scripting.Dictionary利用

使われているフォント名一覧を出力するWordマクロ-Scripting.Dictionary利用

対象:Word2007, Word2010, Word2013

「ワードvbaマクロ フォント名」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

フォント名を取得するWord VBAのコード、マクロを探していた検索です。

フォント名を取得するサンプルコード

FontオブジェクトのNameプロパティを使えば、フォント名を取得することができます。

例えば、

MsgBox Selection.Font.Name

で、カーソル位置のフォント名がメッセージボックスに表示され、

MsgBox ActiveDocument.Range(0, 1).Font.Name

で、アクティブな文書の1文字目のフォントの名前がメッセージボックスに表示されます。

[スポンサードリンク]

文書で使われているフォントの名前をすべて取得するサンプルマクロ

実務で使えそうなマクロをご紹介しておきましょう。
文書内で使われている、すべてのフォントの名前を取得するマクロです。

Sub 本文で使われている全フォント名を取得する()

 Dim dic As Object
 Set dic = CreateObject("Scripting.Dictionary")

 On Error Resume Next
 Dim rng As Range
 For Each rng In ActiveDocument.Characters
  dic.Add _
   Key:=rng.Font.Name, _
   Item:=""
 Next
 On Error GoTo 0
 
 Dim key As Variant
 For Each key In dic.Keys
  Debug.Print key
 Next

 Set dic = Nothing

End Sub

上記のマクロを実行すると、アクティブな文書の本文で使われているフォント名がイミディエイトウィンドウに出力されます。

サンプルマクロの解説

上記のマクロでは、DocumentオブジェクトのCharactersコレクションオブジェクトから、1文字ずつRangeオブジェクトを取得するFor Each~Nextループを回しています。

For Each rng In ActiveDocument.Characters

なお、Charactersコレクションオブジェクトのメンバーである単一オブジェクトはRangeオブジェクトですから、

フォント名を取得するWordマクロ

このFor Each~Nectループの中であれば「chr.Font.Name」というオブジェクト式で、1文字ずつフォント名を取得できます。(先にご紹介した「.Range(0, 1).Font.Name」というオブジェクト式と同じ考え方です)

課題は、フォント名を重複なしでどう取得するか、です。
この課題を解決するためにここでは、Scripting.DictionaryオブジェクトのAddメソッドで指定するKeyに、

フォント名を取得するWordマクロ

重複した値を指定するとエラーになる、という特徴を利用しています。

以下のコードを実行するとDictionaryオブジェクトのKeyにフォント名が格納されていきますが、

Set dic = CreateObject("Scripting.Dictionary")
For Each rng In ActiveDocument.Characters
 dic.Add _
   Key:=rng.Font.Name, _
   Item:=""

同じフォント名が格納済みだったときにはエラーが発生します。

これを逆手にとって、

On Error Resume Next
For Each rng In ActiveDocument.Characters

のように、エラーを無視して、とにかくFor Each~Nextループを回すことで、重複のない全フォント名のリストをDictionaryオブジェクトとして作っています。

その後、DictionaryオブジェクトのKeyからフォント名を取り出して、イミディエイトウィンドウに出力しています。

Dim key As Variant
For Each key In dic.Keys
 Debug.Print key
Next

最終更新日時:2024-05-23 09:41

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » フォント » 使われているフォント名一覧を出力するWordマクロ-Scripting.Dictionary利用

「フォント」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.