The following sample Visual Basic for Applications macro creates a new blank document and inserts a sample of each available font:
Sub ListFonts()
Dim varFont As Variant
' Speeds macro processing and suppresses display.
Application.ScreenUpdating = False
' Create new document.
Documents.Add Template:="normal"
' Loop through each available font.
For Each varFont In FontNames
With Selection
' Format for name of font.
.Font.Name = "times new roman"
.Font.Bold = True
.Font.Underline = True
' Insert Font name.
.TypeText varFont
' Insert a new paragraph after the Font Name.
.InsertParagraphAfter
' Move to the new paragraph.
.MoveDown unit:=wdParagraph, Count:=1, Extend:=wdMove
' Format for the font example.
.Font.Bold = False
.Font.Underline = False
.Font.Name = varFont
' Enter example text(Alphabetic characters.)
.TypeText "abcdefghijklmnopqrstuvwxyz"
' Insert a new paragraph.
.InsertParagraphAfter
' Move to the new paragraph.
.MoveDown unit:=wdParagraph, Count:=1, Extend:=wdMove
' Insert example text(Numeric characters.)
.TypeText "0123456789?$%&()[]*_-=+/<>"
' Insert two new paragraphs and move down.
.InsertParagraphAfter
.InsertParagraphAfter
.MoveDown unit:=wdParagraph, Count:=1, Extend:=wdMove
End With
Next varFont
Application.ScreenUpdating = True
End Sub
The following macro creates a new blank document, creates a table, and then inserts a sample of each available font:
Sub ListAllFonts()
Dim J As Integer
Dim FontTable As Table
'Start off with a new document
Set NewDoc = Documents.Add
'Add a table and set the table header
Set FontTable = NewDoc.Tables.Add(Selection.Range, FontNames.Count + 1, 2)
With FontTable
.Borders.Enable = False
.Cell(1, 1).Range.Font.Name = "Arial"
.Cell(1, 1).Range.Font.Bold = 1
.Cell(1, 1).Range.InsertAfter "Font Name"
.Cell(1, 2).Range.Font.Name = "Arial"
.Cell(1, 2).Range.Font.Bold = 1
.Cell(1, 2).Range.InsertAfter "Font Example"
End With
'Go through all the fonts and add them to the table
For J = 1 To FontNames.Count
With FontTable
.Cell(J + 1, 1).Range.Font.Name = "Arial"
.Cell(J + 1, 1).Range.Font.Size = 10
.Cell(J + 1, 1).Range.InsertAfter FontNames(J)
.Cell(J + 1, 2).Range.Font.Name = FontNames(J)
.Cell(J + 1, 2).Range.Font.Size = 10
.Cell(J + 1, 2).Range.InsertAfter "ABCDEFG abcdefg 1234567890"
End With
Next J
FontTable.Sort SortOrder:=wdSortOrderAscending
End Sub