2016-07-20 2 views
1

J'exécute une recherche de style dans Microsoft Word à l'aide d'une macro VBA. Mon but est d'effectuer certaines actions une fois pour chaque style trouvé dans le document.Macro VBA Microsoft Word - Un paragraphe Recherche et remplacement de styles

La macro fonctionne correctement sur les documents comportant au moins deux paragraphes, mais la macro n'alert pas le style correctement dans un document qui contient exactement un paragraphe. Il semble étrange que lorsque j'entre une nouvelle marque de paragraphe, les styles soient trouvés, même si je n'ajoute aucun nouveau texte ou style au document, juste une marque de paragraphe vide supplémentaire. Est-ce que quelqu'un sait ce qui ne va pas avec ma macro et comment je peux résoudre ce problème? Merci d'avoir jeté un coup d'oeil.

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 

Répondre

1

Je ne comprends pas pourquoi ActiveDocument.Content ne fonctionne pas, mais le remplacer par ActiveDocument.Range(0,0) semble résoudre le problème (testé dans Word 2016).

With ActiveDocument.Range(0, 0).Find

+0

Merci! C'est une grande aide. – user773328