Поиск неиспользуемых стилей (Microsoft Word)
Возможность создавать стили и управлять ими — одна из сильных сторон 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.