문서 글꼴 목록 만들기 (Microsoft Word)
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 [문서 글꼴 목록 만들기]
.