Sustituir texto en word

Solo consultas sobre macros y código VBA Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

Sustituir texto en word

Notapor Antoni » 05 Feb 2010 09:02

Hola a todos:

Os adjunto una macro para buscar y sustituir un texto en un documento word.

Dos problemas:

1.-No sustituye el texto
2.-No salva el documento

En definitiva, no hace absolutamente nada de lo que debería hacer.

Si alguien sabe porqué, se lo agradecería mucho.

Pra probarlo, crear un documento word con el nombre DOCUMENTO.doc y un texto con la palabra "BUSCAR".

Saludos.

Antoni desde Santiago de Compostela

Código: Seleccionar todo
Sub SUSTITUIR_TEXTO()

Dim Obj_Word As Object
     
'Crea una nueva referencia para poder acceder al documento
Set Obj_Word = CreateObject("Word.Application")

' aplicación de word no visible
Obj_Word.Visible = True
 
'Abre el archivo especificado mediante el método Open y algunas opciones
Obj_Word.Documents.Open Filename:=ThisWorkbook.Path & "\DOCUMENTO.DOC"
   
' Coloca la selección al comienzo del documento
Obj_Word.ActiveDocument.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="1"

' Limpia variables de búsqueda y reemplazo
Obj_Word.Selection.Find.ClearFormatting
Obj_Word.Selection.Find.Replacement.ClearFormatting
 
' Propiedades de la búsqueda y reemplazo
With Obj_Word.Selection.Find
    .Text = "BUSCAR"
    .Replacement.Text = "CAMBIAR"
    .Forward = True
    .Wrap = wdFindAsk
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
 
' Ejecuta la búsqueda y reemplazo
Obj_Word.ActiveWindow.Selection.Find.Execute Replace:=wdReplaceAll
 
'Salva y cierra el documento abierto
Obj_Word.ActiveDocument.Save
Obj_Word.ActiveDocument.Close
 
'Destruye las variables de objeto y cierra la aplicación de word
Obj_Word.Quit
Set Obj_Word = Nothing
     
End Sub
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Sustituir texto en word

Notapor p@li » 05 Feb 2010 09:59

Con un par de modificaciones ya está funcionando, excelente aporte.

Código: Seleccionar todo
Sub SUSTITUIR_TEXTO()

    'cuando no se agrega la referencia a la libreria correspondiente
    'no olvidar declarar las constantes
    Const wdGoToPage = 1
    Const wdGoToNext = 2
    Const wdFindAsk = 1
    Const wdReplaceAll = 2
   
    Dim Obj_Word As Object
    Dim Obj_Doc As Object
   
    'Crea una nueva referencia para poder acceder al documento
    Set Obj_Word = CreateObject("Word.Application")
   
    ' aplicación de word no visible
    Obj_Word.Visible = True
     
    'Abre el archivo especificado mediante el método Open y algunas opciones
   
    'set Obj_Doc= Obj_Word.DOCUMENTS.Open Filename:=ThisWorkbook.Path & "\DOCUMENTO.DOC"
   
    '----------------------------------------------------------
    'después comentar esto, es para evitar abrir un archivo
        Set Obj_Doc = Obj_Word.DOCUMENTS.Add
        Obj_Word.Selection.TypeText Text:="Buscar"
    '----------------------------------------------------------
   
    ' Coloca la selección al comienzo del documento
    Obj_Doc.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="1"
   
    ' Limpia variables de búsqueda y reemplazo
    Obj_Word.Selection.Find.ClearFormatting
    Obj_Word.Selection.Find.Replacement.ClearFormatting
   
    ' Propiedades de la búsqueda y reemplazo
    With Obj_Word.Selection.Find
        .Text = "BUSCAR"
        .Replacement.Text = "CAMBIAR"
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    ' Ejecuta la búsqueda y reemplazo
    Obj_Word.Selection.Find.Execute Replace:=wdReplaceAll
     
    'Salva y cierra el documento abierto
    Obj_Doc.Save
    Obj_Doc.Close
     
    'Destruye las variables de objeto y cierra la aplicación de word
    Obj_Word.Quit
    Set Obj_Doc = Nothing
    Set Obj_Word = Nothing
         
End Sub



Saludos,
Pablo.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
p@li
Miembro Frecuente
Miembro Frecuente
 
Registrado: 04 Oct 2005 16:55
Ubicación: Argentina

Re: Sustituir texto en word

Notapor Antoni » 05 Feb 2010 13:47

Muchas gracias P@li , pero no era un aporte, era un problema real que me traía de cabeza.

Saludos cordiales

Antoni desde Santiago de Compostela
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Sustituir texto en word

Notapor p@li » 05 Feb 2010 14:07

No es nada Antoni, igual lo tomo como un aporte porque en el 95% lo es.

Saludos,
Pablo.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
p@li
Miembro Frecuente
Miembro Frecuente
 
Registrado: 04 Oct 2005 16:55
Ubicación: Argentina


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: gojalvo, jesu gomez y 15 invitados