Access - Replacewith no me funciona en los encabezados!

 
Vista:

Replacewith no me funciona en los encabezados!

Publicado por char3 (87 intervenciones) el 12/03/2007 16:42:00
Hola!

Tengo este codigo para substituir texto de un documento word desde access:

Document = "prova.doc"
Set Variableword = New Word.Application
Variableword.Visible = True
Set DocWord = Variableword.Documents.Add(Document, , , True)
Set rngCurrent2 = DocWord.Content 'Range

With DocWord.Content.Find

.Execute findtext:="{data}", replacewith:=Me.data, Format:=True, Replace:=wdReplaceAll

End with

El caso es que si el texto "{data}" se encuentra dentro del documento funciona, pero no cuando se encuentra en el encabezado o en el pie de página.

Como lo puedo solucionar?
Grácias!
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 Alejandro

Reemplazar texto en el cuerpo, encabezado y pie de página de un documento Word

Publicado por Alejandro (4142 intervenciones) el 04/08/2023 17:47:18
Para reemplazar texto que se encuentra en el encabezado o pie de página de un documento Word desde Access, debes hacerlo de manera separada, ya que estos elementos no están incluidos en el objeto `DocWord.Content`.

Puedes hacer uso de los objetos `HeaderFooter` para acceder al encabezado y pie de página del documento y luego usar el objeto `Range` correspondiente para buscar y reemplazar el texto. Aquí te muestro cómo hacerlo:

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
Document = "prova.doc"
Set Variableword = New Word.Application
Variableword.Visible = True
Set DocWord = Variableword.Documents.Add(Document, , , True)
 
' Reemplazar en el cuerpo del documento
Set rngCurrent1 = DocWord.Content
With rngCurrent1.Find
    .Execute findtext:="{data}", replacewith:=Me.data, Format:=True, Replace:=wdReplaceAll
End With
 
' Reemplazar en el encabezado
For Each sec In DocWord.Sections
    For Each hf In sec.Headers
        Set rngCurrent2 = hf.Range
        With rngCurrent2.Find
            .Execute findtext:="{data}", replacewith:=Me.data, Format:=True, Replace:=wdReplaceAll
        End With
    Next hf
Next sec
 
' Reemplazar en el pie de página
For Each sec In DocWord.Sections
    For Each hf In sec.Footers
        Set rngCurrent3 = hf.Range
        With rngCurrent3.Find
            .Execute findtext:="{data}", replacewith:=Me.data, Format:=True, Replace:=wdReplaceAll
        End With
    Next hf
Next sec

En este código, hemos utilizado tres objetos `Range`: `rngCurrent1` para el cuerpo del documento, `rngCurrent2` para el encabezado y `rngCurrent3` para el pie de página. Hemos utilizado dos bucles `For Each` para recorrer todas las secciones del documento y, dentro de cada sección, hemos buscado y reemplazado el texto en el encabezado y pie de página correspondiente.

Con esto, deberías poder reemplazar el texto correctamente en el cuerpo, encabezado y pie de página del documento Word desde Access.

Espero que esta solución te sea útil. ¡Buena suerte!
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