2016-07-20 10 views
1

Ich führe eine Stilsuche in Microsoft Word mit einem VBA-Makro. Mein Ziel ist es, bestimmte Aktionen für jeden Stil im Dokument einmal durchzuführen.Microsoft Word VBA-Makro - Ein Absatz Suchen-Ersetzen-Stile

Das Makro funktioniert ordnungsgemäß in Dokumenten mit mindestens zwei Absätzen, aber das Makro weist den Stil in einem Dokument, das genau einen Absatz enthält, nicht korrekt auf. Es ist merkwürdig, dass beim Eingeben einer neuen Absatzmarke die Stile gefunden werden, obwohl ich dem Dokument keinen neuen Text oder neue Stile hinzugefügt habe, sondern nur eine zusätzliche, leere Absatzmarke. Weiß jemand was mit meinem Makro falsch ist und wie ich das beheben kann? Danke für einen Blick.

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 

Antwort

1

Ich verstehe nicht, warum ActiveDocument.Content nicht funktioniert, aber es mit ActiveDocument.Range(0,0) ersetzen scheint das Problem zu beheben (getestet in Word 2016).

With ActiveDocument.Range(0, 0).Find

+0

Danke! Das ist eine große Hilfe. – user773328