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

Другие вопросы по тегам