Создание списка шрифтов документа (Microsoft Word)
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
Очевидно, что чем длиннее ваш документ, тем больше времени потребуется для завершения макроса. (Я запустил макрос для документа на 1100 страниц, и это заняло примерно 46 минут. Для 5-страничного документа это заняло менее минуты.) Когда закончите, макрос создает новый документ, содержащий отсортированный список используемых шрифтов.
_Примечание: _
Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
WordTips — ваш источник экономичного обучения работе с Microsoft Word.
(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (13313) относится к Microsoft Word 2007, 2010 и 2013.
Вы можете найти версию этого совета для старого интерфейса меню Word здесь:
link: / word-Creating_a_Document_Font_List [Создание списка шрифтов документа]
.