Word에서는 사용중인 시스템에 설치된 글꼴을 사용할 수 있습니다. 글꼴은 Windows 내에 설치되므로 Word뿐만 아니라 시스템에 설치된 모든 프로그램에서 사용할 수 있습니다.

시스템에서 문서를 만들 때 사용중인 글꼴을 쉽게 알 수 있습니다. 글꼴 목록은 시스템에서 사용할 수있는 글꼴로 제한됩니다. 그러나 다른 사람으로부터 문서를받은 경우 다른 사람의 시스템에 사용자와 다른 글꼴이 설치되어있을 수 있습니다. 즉, 시스템에없는 글꼴로 Word 문서의 서식을 지정할 수 있습니다.

시스템에서 사용 가능한 글꼴 목록과 달리 문서 내에서 사용되는 글꼴 목록을 생성하려는 경우 몇 가지 선택 사항이 있습니다. 우선, 텍스트 편집기에서 Word 문서를 열고 일반적으로 Word에서 볼 수없는 문서 부분을 둘러 볼 수 있습니다. 파일 끝 부분에 문서에 사용 된 글꼴 목록이 표시됩니다. 그러나 이렇게하는 경우 Word 문서가 텍스트 편집기에서 열려있는 동안에는 Word 문서를 변경하지 않도록 매우주의해야합니다. 이렇게하면 Word에서 더 이상 문서를 더 이상 사용할 수 없게됩니다.

Word 기반 솔루션은 문서의 각 문자를 살펴보고 문자 서식을 지정하는 데 사용되는 글꼴을 확인하는 것입니다. 각 문자는 다른 글꼴로 서식을 지정할 수 있고 VBA에서는 문서 자체와 관련하여 글꼴 모음에 액세스 할 수 없기 때문에 문자 별 접근 방식이 필요합니다. 이러한 모음은 유지되지 않는 것 같습니다. 따라서 가장 안전하고 느린 것

방법은 단순히 각 캐릭터를 단계별로 살펴보고 자신 만의 목록을 만드는 것입니다. 다음 VBA 매크로는 작업을 수행합니다.

Public Sub ListFontsInDoc1()

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 분도 채 걸리지 않았습니다.) 완료되면 매크로는 사용 된 글꼴의 정렬 된 목록을 포함하는 새 문서를 만듭니다.

위의 매크로는 주 문서를 단계별로 실행합니다. 문서의 다른 요소에 사용 된 다른 글꼴이있을 수 있습니다. 목록에 포함하려면 이러한 다른 요소를 고려하는 매크로 변형을 사용해야합니다. 다음 매크로 (ListFontsInDoc2)는 훨씬 더 길며 목록에는 주 매크로 내에서 호출되는 세 개의 다른 매크로도 포함됩니다.

Public Sub ListFontsInDoc2()

Dim rngStory As Word.Range   Dim rngChar As Range   Dim oShp As Word.Shape   Dim FontName As String   Dim lngIndex As Long   Dim lngChar As Long   Dim lngCharCount As Long   Dim colFontsUsed As New Collection   Dim oDocList As Word.Document

For Each rngStory In ActiveDocument.StoryRanges     lngChar = 0     lngCharCount = rngStory.Characters.Count     Do       'Evaluate each character       Set rngChar = rngStory.Characters(1)

If rngStory.End > 1 Then         Do           lngChar = lngChar + 1           FontName = rngChar.Font.Name           StatusBar = "Evaluauting character " & lngChar & _            " of " & lngCharCount & " characters in the story range"

'Check if font used for this character already in list           On Error Resume Next           'Collection key prevents adding fonts already           'in the collection           colFontsUsed.Add rngChar.Font.Name, rngChar.Font.Name           On Error GoTo 0           rngChar.MoveStart wdCharacter, 1           rngChar.MoveEnd wdCharacter, 1           'Set rngChar = rngChar.Next '         Loop Until rngChar.End = rngStory.End       End If

'Evaluate shapes in headers and footers       Select Case rngStory.StoryType         Case 6, 7, 8, 9, 10, 11           'No shape will throw an error that we handle and skip           On Error GoTo Err_Handler           If rngStory.ShapeRange.Count > 0 Then             For Each oShp In rngStory.ShapeRange               If oShp.TextFrame.HasText Then                 lngChar = 0                 lngCharCount = oShp.TextFrame.TextRange.Characters.Count                 For Each rngChar In oShp.TextFrame.TextRange.Characters                   lngChar = lngChar + 1                   FontName = rngChar.Font.Name                   StatusBar = "Evaluauting character " & _                    lngChar & " of " & lngCharCount & _                    " characters in the story range"

On Error Resume Next                   colFontsUsed.Add rngChar.Font.Name, rngChar.Font.Name                   On Error GoTo 0                 Next rngChar               End If             Next oShp           End If         Case Else           'Do Nothing       End Select

SkipRange:

On Error GoTo 0       'Get next linked story (if any)

Set rngStory = rngStory.NextStoryRange     Loop Until rngStory Is Nothing   Next rngStory   'Sort the collection.

StatusBar = "Sorting Font List"

Set colFontsUsed = SortCollection(colFontsUsed)

StatusBar = ""

'Create font list document.

Set oDocList = Documents.Add   With oDocList.Range     .Text = "There are " & colFontsUsed.Count & _      " fonts used in the document, as follows:" & vbCr & vbCr     For lngIndex = 1 To colFontsUsed.Count       .InsertAfter colFontsUsed(lngIndex) & vbCr     Next lngIndex   End With   Set oDocList = Nothing   Exit Sub

Err_Handler:

Resume SkipRange End Sub
Public Function SortCollection(ByVal oCol As Collection) As Collection   Dim arrIndex() As Long   Dim lngCount As Long   Dim i As Long   Dim m As Long   Dim oColSorted As New Collection

lngCount = oCol.Count   If lngCount = 0 Then     Set SortCollection = New Collection     Exit Function   End If

'Allocate an index array.

ReDim arrIndex(0 To lngCount - 1) As Long   'Fill the index array.

For i = 0 To lngCount - 1     arrIndex(i) = i + 1   Next i

'Generate an ordered heap   For i = lngCount/2 - 1 To 0 Step -1     Heapify oCol, arrIndex, i, lngCount   Next i

'Sort the index array   For m = lngCount To 2 Step -1     Exchange arrIndex, 0, m - 1     Heapify oCol, arrIndex, 0, m - 1   Next   For i = 0 To lngCount - 1     oColSorted.Add oCol.Item(arrIndex(i))

Next ' fill output collection   Set SortCollection = oColSorted End Function
Private Sub Heapify(oCol As Collection, arrIndexPasssed() As Long, _  lngIndex As Long, lngCount As Long)

Dim lngMidCount As Long   Dim i As Long   lngMidCount = lngCount/2

Do While lngIndex < lngMidCount     i = 2 * lngIndex + 1     If i + 1 < lngCount Then       If oCol.Item(arrIndexPasssed(i)) < oCol.Item(arrIndexPasssed(i + 1)) _        Then i = i + 1     End If     If oCol.Item(arrIndexPasssed(lngIndex)) >= oCol.Item(arrIndexPasssed(i)) _      Then Exit Do     Exchange arrIndexPasssed, lngIndex, i     lngIndex = i   Loop End Sub
Private Sub Exchange(Index() As Long, i As Long, j As Long)

Dim Temp As Long   Temp = Index(i)

Index(i) = Index(j)

Index(j) = Temp End Sub

_ 참고 : _

이 페이지 (또는 WordTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / wordribbon-WordTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_WordTips_는 비용 효율적인 Microsoft Word 교육을위한 소스입니다.

(Microsoft Word는 세계에서 가장 널리 사용되는 워드 프로세싱 소프트웨어입니다.)이 팁 (1522)은 Microsoft Word 97, 2000, 2002 및 2003에 적용됩니다. Word의 리본 인터페이스에 대한이 팁 버전 (Word 2007)을 찾을 수 있습니다. 이후) 여기 :

link : / wordribbon-Creating_a_Document_Font_List [문서 글꼴 목록 만들기].