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 [Создание списка шрифтов документа].