¿buscar/reemplazar en Word desde código vb?

01/12/2008 - 16:44 por robeito | Informe spam
Hola a todos:

Tengo un proyecto de Access con el siguiente código en un formulario:

Public Sub saleAword()
Dim oWord As Object
Dim oWdoc As Object

On Error Resume Next
Set oWord = GetObject(, "Word.Application")
If Err.Number = 429 Then Set oWord = CreateObject("Word.Application")
On Error Goto 0

Set oWdoc = oWord.Documents.Add(CurrentProject.Path &
"\miDocWordOriginal.doc")

oWdoc.content.Find.Execute "#año#", False, , , , , , , , Nz(Me.Año),
wdReplaceAll

oWdoc.content.Find.Execute "#objetivo#", False, , , , , , , ,
Nz(Me.Objetivo), wdReplaceAll
...
...

Se trata de reemplazar todas las ocurrencias de la palabra "#año#" y
"#objetivo#" por los correspondientes que se encuentran en el formulario de
Access.

El código funciona bien para "#año#" , pero falla cuando trata de reemplazar
"#objetivo#" ya que ese campo tiene como 500 caracteres.

¿Cómo pudiera solucionar esto?


Gracias de antemano!!

Por cierto, oWdoc.content.Find.Execute no reemplaza lo que está en los
encabezados ni pies de página :(

Preguntas similare

Leer las respuestas

#1 Monica May
02/12/2008 - 10:48 | Informe spam
hola,

...reemplazar todas las ocurrencias de la palabra "#a#o#" y
"#objetivo#" por los correspondientes ...formulario .. Access.
El codigo funciona bien para "#a#o#" , pero falla cuando trata de
reemplazar
"#objetivo#" ya que ese campo tiene como 500 caracteres.
Por cierto, oWdoc.content.Find.Execute no reemplaza lo que esta en los
encabezados ni pies de página :(



1.-No entiendo porque creas variables objeto ?
2.-Si utilizas como False todas las propiedades de Find.execute ...pregunto





-> Para que las pones ???
3.-No logro ver en tu consulta si realmente quieres :

-> buscar [a#o y objetivo] en el documento de word encabezdos y cuerpo??
->de donde coge el dato a reemplazar [textbox ??] ?
->mas de 255 caracteres en el campo reemplazo ?

4.- Depende de que y para que estes realizando tu consulta quizas te salga
mejor realizar otras opciones ??

Comentanos...!

Saludos
Monica


PD: para buscar y remplazar en encabezados hay que abrir el encabezado de
word primero...


-consulta

...Access ... formulario:
Public Sub saleAword()
Dim oWord As Object
Dim oWdoc As Object
On Error Resume Next
Set oWord = GetObject(, "Word.Application")
If Err.Number = 429 Then Set oWord = CreateObject("Word.Application")
On Error Goto 0
Set oWdoc = oWord.Documents.Add(CurrentProject.Path &
"\miDocWordOriginal.doc")


oWdoc.content.Find.Execute "#año#", False, , , , , , , , Nz(Me.Año),
wdReplaceAll
oWdoc.content.Find.Execute "#objetivo#", False, , , , , , , ,
Nz(Me.Objetivo), wdReplaceAll
...
Respuesta Responder a este mensaje
#2 robeito
02/12/2008 - 16:35 | Informe spam
Gracias, ya me contestaron mi pregunta en el grupo de word.word programming
en inglés, pero te comento que los datos salen de un formulario que creé en
el manejador de base de datos Access, y lo de crear los objetos es algo que
se llama "late binding"

Gracias, muchas gracias!!
Respuesta Responder a este mensaje
#3 Monica May
02/12/2008 - 23:50 | Informe spam
hola,

podrias haber pasado el enlace mas que nada por companerismo y respeto hacia
las personas que te ayudan...

microsoft.public.word.vba.general
http://spedr.com/5j5dw

y en cuanto a [Late binding (tardia referencia) ] en este caso *binding*
es la referencia de Word en tu Access para utilizar codigo de word pues
bien este trae varias desventajas entre ellas su independencia por
consiguiente errores entre versiones ...

entonces de ahi mi preguna [No entiendo porque creas variables objeto ?]
entonces a mi gusto prefiero [ Early Binding (temprana referencia)] ya
que se va a tener todo acceso a todos los objetos, metodos y propiedades en
este caso de Word con solo escribir en la interfaz de VBA Access, ademas de
que tu codigo correra mas rapido, ademas de etc. etc.. etc..

y gracias a ti :) !

Saludos
Monica


Consulta
Gracias, ya me contestaron mi pregunta en el grupo de word.word
programming
en ingles, pero te comento que los datos salen de un formulario que creé
en
el manejador de base de datos Access, y lo de crear los objetos es algo
que
se llama "late binding"
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida