Visual Basic - Sustituir en encabezado de Word desde macro de Excel

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Juan
Val: 5
Ha aumentado su posición en 313 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Sustituir en encabezado de Word desde macro de Excel

Publicado por Juan (2 intervenciones) el 29/03/2021 20:33:22
Buenas tardes.

Tengo una hoja de cálculo desde la que pretendo sustituir cadenas de texto en ficheros Word. Gracias a la ayuda de algunos expertos he conseguido que funcione y haga las sustituciones en el cuerpo de los ficheros Word, pero no consigo que haga ese trabajo en los encabezados y pies de los mismos.

Mi módulo es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Sub Sustituir()
 
' RUTA es el directorio donde se encuentra el fichero Word y NOMBRE su nombre.
Dim RUTA, NOMBRE As String
Dim CADENABUSCAR, CADENAESCRIBIR As String
Dim MiDOCUWord As Object
 
Set MiDOCUWord = CreateObject("word.application")
 
RUTA = "C:\Users\Juan\Desktop\"
NOMBRE="Fichero.docx"
CADENABUSCAR = "83 años"
CADENAESCRIBIR = "ochenta y tres años"
 
With MiDOCUWord
.Visible = True
.Documents.Open RUTA & NOMBRE
.Activate
With .ActiveDocument.Content.Find
 
.ClearFormatting
.Replacement.ClearFormatting
 
.Text = CADENABUSCAR
.Replacement.Text = CADENAESCRIBIR
.Forward = True
.Wrap = 1 'wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
 
.Execute Replace:=2 'wdReplaceAll
End With
End With
End Sub

Agradecería ayuda, pues llevo algún tiempo con ello y no doy con la solución.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.297
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Sustituir en encabezado de Word desde macro de Excel

Publicado por Antoni Masana (463 intervenciones) el 30/03/2021 18:23:21
Ya lo intente y no se puede. Para cualquier cosa que quieras hacer con una macro pones GRABAR MACRO, haces la acción y veras si genera código, si no hay código no se puede hacer y esta es una de ellas.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Juan
Val: 5
Ha aumentado su posición en 313 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Sustituir en encabezado de Word desde macro de Excel

Publicado por Juan (2 intervenciones) el 30/03/2021 19:09:29
Comentando en otros foros parece que sí es posible, pero no me han dado una respuesta clara y directa.

Mis conocimientos sobre objetos son muy pocos y no puedo valorar la posibilidad, o no, de mi propuesta. Lo que si he comprobado es que se puede generar una macro en Word que hace esta tarea, pero una vez se traspasa a Excel da error.

Quizás no he sabido acertar con el dónde. La macro de Word es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub Macro_Word_Sustituir_en_Encabezado()
 
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "83 años"
        .Replacement.Text = "23 primaveras"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub

Coemntar también que hay una opción que me ha dado un resultado parecido. He insertado en el cuerpo de Word un marcador con el texto que deseaba sustituir y una referencia cruzada al mismo en el encabezado.

Al realizar la sustitución en el marcador, cambia también en el encabezado, pero no se ve hasta que la página se actualiza con las opciones del menú, bien "Imprimir" o bien "Vista Preliminar".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar