Home » ワードマクロ・Word VBAの使い方 » フォント » Word文書で使われているフォントの名前とサイズを出力するマクロ

Word文書で使われているフォントの名前とサイズを出力するマクロ

動作検証バージョン:Windows 11 Home + 64bit Word バージョン 2406(ビルド17715.20000クイック実行)ベータチャネル

200ページほどのWord文書を編集していて、その文書内で使われているフォントの名前とフォントサイズを確認したくなりました。

以前、Scripting.Dictionaryを使ったフォント名だけを出力するマクロをご紹介しましたが、もう少しシンプルでいいように感じDictionaryオブジェクトを使わないWordマクロを作りましたのでご紹介しておきます。

使われているフォントの名前とサイズを出力するサンプルマクロ

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

Sub 使われているフォントの名前とサイズの一覧を出力する()

 Dim fon_list As String
 
 Dim fon As String
 Dim rng As Range
 For Each rng In ActiveDocument.Characters
  fon = rng.Font.Name & "; " & rng.Font.Size
  If InStr(fon_list, fon) = 0 Then
   fon_list = fon_list & fon & vbCrLf
  End If
 Next
 
 Debug.Print fon_list

End Sub

出力時には、フォント名とフォントサイズの間に「;」セミコロンが入りますから、最近のExcelにコピペすると、まあまあの確率でフォント名とフォントサイズが別のセルになった状態で貼り付けられるんじゃないかと思います。

サンプルマクロで行っている処理

拙著『Excel VBAユーザーのためのWord VBA入門(1): Document・Range・Selectionの基本編』の[3-6. Characters経由でRangeを取得する]で、Word文書の本文を一文字ずつ処理するFor Each~Nextループを解説しています。

そのFor Each~Nextループを使ったWordマクロです。

Dim fon_list As String

Dim fon As String
Dim rng As Range
For Each rng In ActiveDocument.Characters
 fon = rng.Font.Name & "; " & rng.Font.Size
 If InStr(fon_list, fon) = 0 Then
  fon_list = fon_list & fon & vbCrLf
 End If

Debug.Print fon_list

最初に宣言しているのは、フォントの名前とサイズを格納する変数です。

Dim fon_list As String

この変数fon_listを、最後に出力しています。

Debug.Print fon_list

For Each~Nextループ内では、まず、変数fonにフォント名とフォントサイズを代入しています。

 fon = rng.Font.Name & "; " & rng.Font.Size

そのフォント名とフォントサイズが、変数fon_listに見つからなかったときにのみ、fon_listの末尾に追加しています。

 If InStr(fon_list, fon) = 0 Then
  fon_list = fon_list & fon & vbCrLf

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

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » フォント » Word文書で使われているフォントの名前とサイズを出力するマクロ

「フォント」の記事一覧

検索


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

.