web-dev-qa-db-fra.com

Comment utiliser / activer (objet RegExp) Expression régulière à l'aide de VBA (MACRO) dans Word

J'ai fait beaucoup de recherches sur Google pour obtenir une réponse appropriée sur la façon d'utiliser ou de commencer à utiliser des expressions régulières dans VBA.

Je l'ai enfin compris, donc j'aimerais partager mes connaissances avec vous. S'il vous plait corrigez moi si je me trompe.

16
HateStackOverFlow

Par défaut, l'option Expression régulière est désactivée dans Word 2007, pour activer ce plase, procédez comme suit,

1). Allez dans Outils> Références comme indiqué ci-dessous. enter image description here

2). Cochez maintenant l'option "Microsoft VBScript Regular Expressions 5.5" puis appuyez sur oh comme indiqué ci-dessous. enter image description here

3). Désormais, vous pouvez créer un objet RegExp dans votre script VBA. Vous pouvez vérifier qu'il recherche dans la base de données d'objets comme expliqué ci-dessous. Affichage> Navigateur d'objets (ou appuyez sur F2), comme illustré ci-dessous.

enter image description here

et recherchez l'objet RegExp

enter image description here

4). L'objet RegExp utilise des expressions régulières pour correspondre à un modèle. Les propriétés suivantes sont fournies par RegExp. Ces propriétés définissent le modèle pour comparer les chaînes transmises à l'instance RegExp:

a. Pattern: Une chaîne qui définit l'expression régulière.

b. IgnoreCase: Une propriété booléenne qui indique si vous devez tester l'expression régulière par rapport à tous correspondances possibles dans une chaîne.

c. Global: Définit une valeur booléenne ou renvoie une valeur booléenne qui indique si un modèle doit correspondre à toutes les occurrences dans une chaîne de recherche entière, ou si un modèle doit correspondre uniquement à la première occurrence.

RegExp fournit les méthodes suivantes pour déterminer si une chaîne correspond à un modèle particulier d'une expression régulière:

d. Test: Renvoie une valeur booléenne qui indique si l'expression régulière peut être mise en correspondance avec succès contre la chaîne.

e. Execute: Renvoie un objet MatchCollection qui contient un objet Match pour chaque correspondance réussie.

Veuillez trouver un exemple de comparaison pour RexExp fourni dans le forum Microsoft msdn.

Function TestRegExp(myPattern As String, myString As String)
   'Create objects.
   Dim objRegExp As RegExp
   Dim objMatch As Match
   Dim colMatches   As MatchCollection
   Dim RetStr As String

   ' Create a regular expression object.
   Set objRegExp = New RegExp

   'Set the pattern by using the Pattern property.
   objRegExp.Pattern = myPattern

   ' Set Case Insensitivity.
   objRegExp.IgnoreCase = True

   'Set global applicability.
   objRegExp.Global = True

   'Test whether the String can be compared.
   If (objRegExp.Test(myString) = True) Then

   'Get the matches.
    Set colMatches = objRegExp.Execute(myString)   ' Execute search.

    For Each objMatch In colMatches   ' Iterate Matches collection.
      RetStr = RetStr & "Match found at position "
      RetStr = RetStr & objMatch.FirstIndex & ". Match Value is '"
      RetStr = RetStr & objMatch.Value & "'." & vbCrLf
    Next
   Else
    RetStr = "String Matching Failed"
   End If
   TestRegExp = RetStr
End Function

J'espère que cela pourrait aider complètement quelqu'un, car j'ai perdu presque une demi-journée dessus.

Merci

37
HateStackOverFlow