Возможность создавать стили и управлять ими — одна из сильных сторон Word. Стили позволяют быстро и легко применять единообразное форматирование ко всему документу и обновлять это форматирование по мере изменения ваших потребностей.

Word предоставляет довольно много встроенных (предопределенных) стилей, и вы можете добавить больше по мере необходимости. В какой-то момент вам может потребоваться определить, какие стили не используются в документе. Затем этот список можно использовать, чтобы определить, какие стили можно легко удалить, просто потому, что они больше не нужны.

Встроенного способа создания неиспользуемого списка стилей в Word нет.

Вместо этого вам нужно создать макрос, который сделает эту работу за вас. Вы можете подумать, что создание такого макроса будет простой задачей: посмотреть, какие стили, по мнению Word, используются, а затем сравнить их со стилями, которые определены. Проблема с этим подходом заключается в том, что свойство InUse VBA (которое применяется к объектам Style) используется для нескольких целей. Официальное определение свойства InUse состоит в том, что оно истинно, если выполняется одно из следующих двух условий:

  • Стиль — это встроенный стиль, который был изменен или применен к документу.

  • Стиль — это определенный пользователем стиль, созданный в документе.

Это означает, что свойство InUse не указывает, действительно ли стиль используется в документе. Вы можете что-то сделать с определением стиля, не применяя его, и этот стиль будет отмечен как «используемый», даже если в документе нет текста, который фактически использует этот стиль.

Однако можно сгенерировать список неиспользуемых стилей, используя свойства InBuilt и InUse в макросе. Следующий макрос VBA использует этот подход:

Sub CreateStyleList()

Dim docThis As Document     Dim styItem As Style     Dim sBuiltIn(499) As String     Dim iStyBICount As Integer     Dim sUserDef(499) As String     Dim iStyUDCount As Integer     Dim sInUse(499) As String     Dim iStyIUCount As Integer     Dim iParCount As Integer     Dim J As Integer, K As Integer     Dim sParStyle As String     Dim bInUse As Boolean          ' Ref the active document     Set docThis = ActiveDocument          ' Collect all styles being used     iStyIUCount = 0     iParCount = docThis.Paragraphs.Count     iParOut = 0     For J = 1 To iParCount         sParStyle = docThis.Paragraphs(J).Style         For K = 1 To iStyIUCount             If sParStyle = sInUse(K) Then Exit For         Next K         If K = iStyIUCount + 1 Then             iStyIUCount = K             sInUse(iStyIUCount) = sParStyle         End If     Next J          iStyBICount = 0     iStyUDCount = 0     ' Check out styles that are "in use"

For Each styItem In docThis.Styles         'see if in those being used         bInUse = False         For J = 1 To iStyIUCount             If styItem.NameLocal = sInUse(J) Then bInUse = True         Next J         'Add to those not in use         If Not bInUse Then             If styItem.BuiltIn Then                 iStyBICount = iStyBICount + 1                 sBuiltIn(iStyBICount) = styItem.NameLocal             Else                 iStyUDCount = iStyUDCount + 1                 sUserDef(iStyUDCount) = styItem.NameLocal             End If         End If     Next styItem          'Now create the output document     Documents.Add          Selection.TypeText "Styles In Use"

Selection.TypeParagraph     For J = 1 To iStyIUCount         Selection.TypeText sInUse(J)

Selection.TypeParagraph     Next J     Selection.TypeParagraph     Selection.TypeParagraph          Selection.TypeText "Built-in Styles Not In Use"

Selection.TypeParagraph     For J = 1 To iStyIUCount         Selection.TypeText sBuiltIn(J)

Selection.TypeParagraph     Next J     Selection.TypeParagraph     Selection.TypeParagraph          Selection.TypeText "User-defined Styles Not In Use"

Selection.TypeParagraph     For J = 1 To iStyIUCount         Selection.TypeText sUserDef(J)

Selection.TypeParagraph     Next J     Selection.TypeParagraph     Selection.TypeParagraph End Sub

Макрос сначала проверяет каждый абзац в документе, чтобы определить имена стилей, фактически используемых в документе. Эта информация хранится в массиве sInUse. Затем макрос начинает просматривать список, который, по мнению Word, используется — это стили, принадлежащие коллекции стилей. Если стиля нет в массиве sInUse, он добавляется либо в массив sBuiltIn (для встроенных стилей), либо в массив sUserDef (для стилей, определенных пользователем). Когда сравнения сделаны, создается новый документ, в котором перечислены результаты.

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (1488) относится к Microsoft Word 97, 2000, 2002 и 2003.