Wordでは、使用しているシステムにインストールされているフォントを使用できます。フォントはWindows内にインストールされるため、Wordだけでなく、システムにインストールされているすべてのプログラムで使用できます。

システムでドキュメントを作成するとき、使用されているフォントを簡単に知ることができます。フォントのリストは、システムで使用可能なフォントに限定されています。ただし、別の人からドキュメントを受け取った場合、他の人のシステムにインストールされているフォントがあなたとは異なる場合があります。つまり、Word文書は、システムにないフォントでフォーマットされる可能性があります。

(システムで使用可能なフォントのリストではなく)ドキュメント内で使用されるフォントのリストを生成する場合は、いくつかの選択肢があります。まず、テキストエディタでWord文書を開いて、Wordでは通常表示されない文書の部分を確認できます。ファイルの終わり近くに、ドキュメントで使用されているフォントのリストが表示されます。ただし、これを行う場合は、テキストエディタで開いているときにWord文書に変更を加えないように十分に注意する必要があります。これを行うと、ドキュメントがWordで使用できなくなる可能性があります。

Wordベースのソリューションは、ドキュメント内の各文字を調べて、文字のフォーマットに使用されているフォントを確認することです。各文字は異なるフォントでフォーマットされる可能性があり、VBAではドキュメント自体に関連するフォントコレクションにアクセスできないため、文字ごとのアプローチが必要です。そのようなコレクションは維持されていないようです。したがって、最も安全な(そして最も遅い)

方法は、各文字をステップスルーして独自のリストを作成することです。次のVBAマクロはタスクを実行します:

Public Sub ListFontsInDoc()

Dim FontList(199) As String     Dim FontCount As Integer     Dim FontName As String     Dim J As Integer, K As Integer, L As Integer     Dim X As Long, Y As Long     Dim FoundFont As Boolean     Dim rngChar As Range     Dim strFontList As String

FontCount = 0     X = ActiveDocument.Characters.Count     Y = 0     ' For-Next loop through every character     For Each rngChar In ActiveDocument.Characters         Y = Y + 1         FontName = rngChar.Font.Name         StatusBar = Y & ":" & X         ' check if font used for this char already in list         FoundFont = False         For J = 1 To FontCount            If FontList(J) = FontName Then FoundFont = True         Next J         If Not FoundFont Then             FontCount = FontCount + 1             FontList(FontCount) = FontName         End If     Next rngChar

' sort the list     StatusBar = "Sorting Font List"

For J = 1 To FontCount - 1         L = J         For K = J + 1 To FontCount             If FontList(L) > FontList(K) Then L = K         Next K         If J <> L Then             FontName = FontList(J)

FontList(J) = FontList(L)

FontList(L) = FontName         End If     Next J

StatusBar = ""

' put in new document     Documents.Add     Selection.TypeText Text:="There are " & _       FontCount & " fonts used in the document, as follows:"

Selection.TypeParagraph     Selection.TypeParagraph     For J = 1 To FontCount         Selection.TypeText Text:=FontList(J)

Selection.TypeParagraph     Next J End Sub

明らかに、ドキュメントが長いほど、マクロが終了するまでの時間が長くなります。 (1,100ページのドキュメントでマクロを実行したところ、約46分かかりました。5ページのドキュメントでは1分もかかりませんでした。)完了すると、マクロは、使用されているフォントの並べ替えられたリストを含む新しいドキュメントを作成します。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(13313)は、Microsoft Word 2007、2010、および2013に適用されます。

Wordの古いメニューインターフェイスに関するこのヒントのバージョンは、次の場所にあります: