Microsoft Word VBA Macro - один стиль поиска и замены одного абзаца
Я выполняю поиск стиля в Microsoft Word с помощью макроса VBA. Моя цель - выполнить определенные действия один раз для каждого стиля, найденного в документе.
Макрос корректно работает с документами, имеющими по крайней мере два абзаца, но макрос неправильно оповещает о стиле в документе, который содержит ровно один абзац. Кажется странным, что, когда я ввожу новую метку абзаца, стили будут найдены, хотя я не добавлял в документ новый текст или стили, только лишняя пустая метка абзаца. Кто-нибудь знает, что не так с моим макросом и как я могу это исправить? Спасибо, что посмотрели.
Sub AlertAllStylesInDoc()
Dim Ind As Integer
Dim numberOfDocumentStyles As Integer
Dim styl As String
Dim StyleFound As Boolean
numberOfDocumentStyles = ActiveDocument.styles.count
For Ind = 1 To numberOfDocumentStyles
styl = ActiveDocument.styles(Ind).NameLocal
With ActiveDocument.Content.Find
.ClearFormatting
.text = ""
.Forward = True
.Format = True
.Style = styl
Do
StyleFound = .Execute
If StyleFound = True Then
' actual code does more than alert, but keeping it simple here'
MsgBox styl
GoTo NextStyle
Else
Exit Do
End If
Loop
End With
NextStyle:
Next
End Sub
1 ответ
Я не понимаю почему ActiveDocument.Content
не работает, но заменяет его ActiveDocument.Range(0,0)
кажется, чтобы решить проблему (протестировано в Word 2016).
With ActiveDocument.Range(0, 0).Find