VBA:

VBA:

Tenho múltiplas ocorrências de [palavra]-[palavra] em um texto, por exemplo, interesse próprio em vez de interesse próprio, que é a forma correta. Estou tentando remover o espaço estranho após o traço usando os curingas do MS Word. Na caixa Localizar e Substituir eu insiro:

Encontre: *- *
Substitua por: \1-\2

No entanto, isso não funciona. Qual é a forma correta para fazer isso?

Responder1

VBA:

Execute WrapReplaceem documento Word.

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

Responder2

Você omitiu informar ao Word quais são as partes \1 e \2. Adicione colchetes ao redor do asterisco, hífen e do asterisco, mas deixe o espaço entre eles. Em Substituir por você não precisa do hífen, pois agora ele é capturado como parte de \1.

insira a descrição da imagem aqui

informação relacionada