VBA:

VBA:

In meinem Text kommt [Wort]-[Wort] mehrfach vor, z. B. „self-interest“ statt „self-interest“, was die korrekte Form ist. Ich versuche, das überflüssige Leerzeichen nach dem Strich mithilfe der Platzhalter von MS Word zu entfernen. In das Feld „Suchen und Ersetzen“ gebe ich ein:

Suchen: *- *
Ersetzen durch: \1-\2

Es funktioniert jedoch nicht. Was ist die richtige Form, um dies zu erreichen?

Antwort1

VBA:

Im Word-Dokument ausführen WrapReplace.

Sub WrapReplace()
    Call RegExpReplace("(\w+)\-\s(\w+)", "$1-$2")
End Sub

Private Sub RegExpReplace(pattern As String, Backreference As String)
    Dim strReplacement As String
    Set oRegExp = CreateObject("VBScript.RegExp")

    With oRegExp
        .Global = True
        .IgnoreCase = False
        .pattern = pattern
    End With

    Set matches = oRegExp.Execute(ActiveDocument.Content)
 
    For Each match In matches
        Set matchRange = ActiveDocument.Content
    
        strReplacement = oRegExp.Replace(match.Value, Backreference)
    
        With matchRange.Find
            .Text = match.Value
            .Replacement.Text = strReplacement
        
            .Wrap = wdFindAsk
            .Execute Replace:=wdReplaceOne
        End With
    Next

End Sub

Antwort2

Sie haben vergessen, Word mitzuteilen, was die Teile \1 und \2 sind. Fügen Sie runde Klammern um den Bindestrich und das Sternchen hinzu, aber lassen Sie das Leerzeichen dazwischen. In Ihrem Ersetzen durch brauchen Sie den Bindestrich nicht, da dieser nun als Teil von \1 erfasst wird.

Bildbeschreibung hier eingeben

verwandte Informationen