VBA:

VBA:

Tengo múltiples instancias de [palabra]- [palabra] en un texto, por ejemplo, interés propio en lugar de interés propio, que es la forma correcta. Estoy intentando eliminar el espacio sobrante después del trazo usando los comodines de MS Word. En el cuadro Buscar y reemplazar ingreso:

Buscar: *- *
Reemplazar con: \1-\2

Sin embargo, no funciona. ¿Cuál es la forma correcta para lograr esto?

Respuesta1

VBA:

Ejecutar WrapReplaceen documento de 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

Respuesta2

Omitiste decirle a Word cuáles son las partes \1 y \2. Agregue corchetes alrededor del guión del asterisco y el asterisco, pero deje el espacio entre ellos. En Reemplazar con no necesita el guión, ya que ahora se captura como parte de \1.

ingrese la descripción de la imagen aquí

información relacionada