Foros del Web » Soporte técnico » Ofimática »

VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino....

Estas en el tema de VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino.... en el foro de Ofimática en Foros del Web. Hola amigos, espero que esten bien. El siguiente code pasa el valor de los textbox del formulario a un nuevo documento de word Private Sub ...
  #1 (permalink)  
Antiguo 07/06/2007, 07:25
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino....

Hola amigos, espero que esten bien.

El siguiente code pasa el valor de los textbox del formulario a un nuevo
documento de word

Private Sub Enviar_Click()
Dim MSWord As New Word.Application
Dim Documento As Word.Document
Dim Parrafo As Paragraph
Set Documento = MSWord.Documents.Add
Set Parrafo = Documento.Paragraphs.Add
Parrafo.Range.InsertAfter NOMBRE.Text
Parrafo.Range.InsertAfter APELLIDOS.Text
MSWord.Visible = True
End Sub


pero yo lo que quisiera es hacerlo en una plantilla previamente creada de
word, esto es, que en la plantilla de word se vayan recogiendo los valores que pasan las cajas de texto del formulario y las vaya colocando en el sitio
indicado por mí dentro de la plantilla. lo más probable que se haya de hacer con insertando marcadores en doc de Word y campos (estilo Ref) pero no sé por donde meterle mano.... y aparte de que habría que hacer un bucle para pasar los campos al word.....

¿alguna idea por donde debo comenzar?

Estoy a la escucha
nos vemos.
__________________

***Aprendiz de todo y maestro de nada***
  #2 (permalink)  
Antiguo 07/06/2007, 14:18
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

en lugar de crear un documento nuevo, abre la plantilla que tengas y es buena idea eso de los amrcadores, asi podrias hacer cosas como:

Dim documento as Object
......
Set documento = CreateObject("word.application")
......
Frase = Userform1.Textbox1
.....
With documento
.GoTo What:=wdGoToBookmark, Name:="marcador1"
.TypeText Text:="ades"
....

etc etc

Abraham
  #3 (permalink)  
Antiguo 07/06/2007, 15:13
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

Uhhh,, interesante,,, mañana me voy a poner un ratito con ello, a ver si saco algo en claro.... ya te tendré informado.. pues el VB me cuesta sudor y lágrimas....

seguimos en contacto...
__________________

***Aprendiz de todo y maestro de nada***
  #4 (permalink)  
Antiguo 07/06/2007, 16:02
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

With documento
.GoTo What:=wdGoToBookmark, Name:="marcador1"
.TypeText Text:= Frase
....

Mi recomendacion es que trabajes mucho con la grabadora de macros del word, para que de ese modo puedas ver, modificar y usar codigos VBA que te serviran

Abraham

PD: No olvidemos que no es lo mismo VBA que VB
  #5 (permalink)  
Antiguo 11/06/2007, 07:34
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

Hola de nuevo, sigo con ello, me ahogo en un vaso de agua...

de momento he conseguido abrir el word con estas lineas

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX
Dim WORD As Object
Dim Documento As String
Private Sub CommandButton1_Click()
Set WORD = CreateObject("word.application")
Documento = "C:\Documents and Settings\epa2\Escritorio\ABRAHAN.doc"
WORD.Documents.Open (Documento)

en el abrahan.doc he insertado dos marcadores: "NOMBRE" y "APELLIDOS". He
estado intentando enlazarlos pero no consiguo sacarlo... esto es lo que
pongo....


NOMBRE = UserForm1.NOMBRE
APELLIDOS = UserForm1.APELLIDOS

' y ahora lo intento enlazar con el documento abierto

With Documento
.GoTo What:=wdGoToBookmark, Name:="NOMBRE"
.TypeText Text:= NOMBRE

.GoTo What:=wdGoToBookmark, Name:="APELLIDOS"
.TypeText Text:= APELLIDOS
End With

WORD.Visible = True
Set WORD = Nothing

End Sub
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX

pero no consigo sacarlo, me dice lo siguiente...

"ERROR de compilación: el objeto With debe ser un tipo definido por el
usuario, Object o Variant"

Pero no lo entiendo, ¿acaso no declaro ya Documento As String???
¿Como podría declarar una segunda variable como Object para que este code me
funcione y poder enlazar con los marcadores de word???

definitivamente hoy estoy espeso....
__________________

***Aprendiz de todo y maestro de nada***
  #6 (permalink)  
Antiguo 11/06/2007, 10:06
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

ahora que lo pienso... ¿y sin antes de llamar al bucle With vuelvo a definir la variable Documento??

' y ahora lo intento enlazar con el documento abierto

'antes Documento era Dim Documento As String
'ahora
Redim Documento As Object

With Documento
.GoTo What:=wdGoToBookmark, Name:="NOMBRE"
.TypeText Text:= NOMBRE

.GoTo What:=wdGoToBookmark, Name:="APELLIDOS"
.TypeText Text:= APELLIDOS
End With

WORD.Visible = True
Set WORD = Nothing

End Sub

¿funcionará así? lo digo porque no tengo el archivo fuente a mano, estoy ahora desde un ciber.......

bueno,,,,,,estoy a la escucha
__________________

***Aprendiz de todo y maestro de nada***
  #7 (permalink)  
Antiguo 11/06/2007, 11:44
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

Listo, coregido, ya lo probe, guiate de este:

Sub ahora()
Dim Worda As Object
Dim Documento1 As String
Set Worda = CreateObject("word.application")
Documento1 = "C:\Doc2.doc"
Worda.Documents.Open (Documento1)


NOMBRE = [a1]
APELLIDOS = [a2]


With Worda
.Selection.GoTo What:=wdGoToBookmark, Name:="NOMBRE"
.Selection.TypeText Text:=NOMBRE

.Selection.GoTo What:=wdGoToBookmark, Name:="APELLIDO"
.Selection.TypeText Text:=APELLIDOS
End With

Worda.Visible = True
Set Worda = Nothing

End Sub

Abraham
  #8 (permalink)  
Antiguo 11/06/2007, 14:47
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

Gracias Abraham por la rápida respuesta y por el esfuerzo... como te dije, aún no lo probé, pues cuando llegué a casa esta tarde (hasta ahora mismito) me he metido en la cama con 39 grados de fiebre. Espero mañana por la mañana estar mejor y chequear el código, de lo contrario, tendras que enviarme el code al más allá....

en fin,,, a ver como amanezco mañana, voy a cerrar el windows y apagar la pc...

espero mañana estar mejor..

un abrazo.
__________________

***Aprendiz de todo y maestro de nada***
  #9 (permalink)  
Antiguo 12/06/2007, 09:47
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

Primero que nada, espero hoy te sientas mejor. Segundo, no dudes en volver a enviar tus comentarios y/o preguntas.Saludos y cuidate.

Abraham
  #10 (permalink)  
Antiguo 13/06/2007, 07:27
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

¡¡hola de nuevo!!

ante todo decir que ya estoy mejor,, he estado con Paracetamol y sudando la
fiebre, pero creo que lo peor ya ha pasado, he estado dia y medio sufriendola,
pero bueno... parece que la tormenta se aleja, se ve que cogí un virus pero no
me ha dado tan fuerte como a otros amigos...

en fin.. te comento lo que he estado trasteando del code...


Al abrirl el documennto me dice que el archvio está en uso. que está bloqueado
para su edición por otro usuario, y me da estas tres opciones:



1) Abrir una copia de sólo lectura
2) Crear una copia local y combinar los cambios más tarde
3) Recibir notificación cuando esté disponible la copia original

he estado mirando porque puede pasar eso (será porque no CIERRO el word sin guadar los cambios????),, y en la línea que me sugeristes de...

Worda.Documents.Open (Documento1)

La he cambiado por...
Worda.Documents.Add (Documento1)

y ahora si que me abre el documento sin decirme lo de que "este archivo está
en uso", sin embargo, veo que aún no me combina los datos.

Me da el siguiente error....

"Se ha producido el error '13' en tiempo de ejecución"
"No coinciden los tipos"
y me indica que la linea del error es esta...
.Selection.TypeText Text:=NOMBRE

al poner el ratón sobre esa línea me indica que la variable NOMBRE tiene el
valor que yo le he dado, por ejemplo, mi nombre. esa variable no está vacía...

luego, al poner el ratón sobre el texto
What:=wdGoToBookmark
me indica que su valor es -1 (tanto el del NOMBRE como el del APELLIDOS) ¿es
eso así?

bueno, no me enrollo más, te pongo el codigo de nuevo con el que estoy
trasteando, ya me dices.
un saludete..

Private Sub CommandButton1_Click()

Dim Worda As Object
Dim Documento1 As String
Set Worda = CreateObject("word.application")
Documento1 = "C:\Documents and Settings\29IU0598\Escritorio\CODIGOS DE EJEMPLO
VBA PARA ESTUDIAR\CREAR WORD DESDE VB\ABRAHAN.doc"
Worda.Documents.Add (Documento1)

NOMBRE = UserForm1.NOMBRE
APELLIDOS = UserForm1.APELLIDOS


With Worda
.Selection.GoTo What:=wdGoToBookmark, Name:="NOMBRE"
.Selection.TypeText Text:=NOMBRE

.Selection.GoTo What:=wdGoToBookmark, Name:="APELLIDO"
.Selection.TypeText Text:=APELLIDOS
End With

Worda.Visible = True
Set Worda = Nothing

'================================================= =============
'MENSAJE ESCRITO DESPUES DE SEGUIR TRASTEANDO UN RATO
'================================================= =============

ya he podido dar con esto....

mira, he cambiado las lineas...

With Worda
.Selection.GoTo What:=wdGoToBookmark, Name:="NOMBRE"
.Selection.TypeText Text:=NOMBRE

por estas....
With Worda

.Documents.Item(1).Bookmarks.Item("NOMBRE").Range. Text = NOMBRE
.Documents.Item(1).Bookmarks.Item("APELLIDOS").Ran ge.Text = APELLIDOS

Y por fin puedo combinar los datos en el word...

¡¡¡ya era hora!!!

sin embargo, sigo con el mismo problemilla del comienzo... con el método Add
del objeto Documents no consigo imprimir la combinación, ahora bien,cuando
cambio Add por Open ya imprimo la combinación, ¡pero me sigue saliendo la
maldita ventanita del "Archivo en Uso!

Necesito una ayudita en esto,, pues ahora sí que estoy atascado....

te pongo el codigo con el que tengo ahora....


Private Sub CommandButton1_Click()

Dim Worda As Object
Dim Documento1 As String
Set Worda = CreateObject("word.application")
Documento1 = "C:\Documents and Settings\epa2\Escritorio\ABRAHAN.doc"

'OJO con los métodos Open o Add, dan diferentes resultados en el code...
Worda.Documents.Open (Documento1)

NOMBRE = UserForm1.NOMBRE
APELLIDOS = UserForm1.APELLIDOS



With Worda

.Documents.Item(1).Bookmarks.Item("NOMBRE").Range. Text = NOMBRE
.Documents.Item(1).Bookmarks.Item("APELLIDOS").Ran ge.Text = APELLIDOS

End With

Worda.Visible = True
Worda.Application.PrintOut Filename:=(Documento1)
Set Worda = Nothing

End Sub

Básicamente el problema es con el método Add me combina los datos pero me los
imprime los marcadores en blanco y con el método open me combina e imprime los
marcadores bien pero me está saliendo siempre la ventanita de "archivo en
uso",,, uffff, vaya lio....

se consigue arreglar una cosa y salir otro problema por otro lado...

Perdona todo el rollo que te he soltado.... uffff
__________________

***Aprendiz de todo y maestro de nada***
  #11 (permalink)  
Antiguo 13/06/2007, 10:46
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

Mi estimado amigo, probe el ultimo codigo y todo bien. Mi sugerencia es que uses "guarda como" y le cambies el nombre al archivo, y obviamente a la parte que le asignas valor a la variable documento1 le colocas el nuevo nombre. Poreque¿? me da la impresion que hay un archivo temporal con el nombre antiguo por culpa del cual sale el famoso menjsae

Abraham
  #12 (permalink)  
Antiguo 13/06/2007, 15:55
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

okis abraham,, voy a hacer eso mismo que me dices,, quizás sea eso.. mañana mismo me pongo con ello..

un saludete...
y nos vemos pronto, prontitoooooo
__________________

***Aprendiz de todo y maestro de nada***
  #13 (permalink)  
Antiguo 14/06/2007, 08:03
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

hola de nuevo abraham,, efectivamente, era lo que tu decías...

no me acordaba de "matar" la variable con el nothing al final del procedimiento y se quedaba abierto el archivo cada vez que intentaba volver a abrirlo.. ¡¡¡al final me sale!!! muchas gracias por tus sabios consejos desde el otro "lado del charco".....

seguimos en contacto,,,, y adelante con mi pequeño proyecto,,, espero algún día poder acabarlo,, ya que llevo cerca de un año puliendolo...

lo dicho, muchas gracias.....creo que podemos dar este post por finalizado...

un abrazo fuerte y nos vemos pronto, prontitooooooooo
__________________

***Aprendiz de todo y maestro de nada***
  #14 (permalink)  
Antiguo 14/06/2007, 09:22
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

que alegria haber colaborado contigo... creo que si voy a España el proximo año, tendre varias cervezas seguras, jejejeje, nos vemos

Abraham
  #15 (permalink)  
Antiguo 07/08/2007, 13:51
 
Fecha de Ingreso: agosto-2007
Mensajes: 1
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

Hola, primero que nada dejeme decirte que estas preguntas y respuestas me han ayudado mucho... solo tengo una pregunta, al crear el documento de word y al cerrarlo manualmente me aparece el error de que el archivo Normal.dot esta en uso... y se supone que con la siguiente instruccion se "mata" el archivo y se elimina ese error:

Set Worda = Nothing

pero no lo hace... ¿que instruccion debo poner entonces?
  #16 (permalink)  
Antiguo 08/08/2007, 10:11
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Re: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen camino

al no conocer todo tu codigo, es casi imposible saber que ocurre. OTra cosa muy importante, lo que hace esa instruccion es descargar la varibale

Abraham
  #17 (permalink)  
Antiguo 11/07/2009, 19:40
 
Fecha de Ingreso: julio-2009
Mensajes: 2
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: VBA EXCEL: Pasar datos UserForm a Plantilla Word, creo que voy por el buen

hola, los felicito no sabes cuanto me ha ayudado esta seccion de ustedes, ya han pasado 2 años desde q te preguntaron.. y me ha servido mucho.. pase todo el dia investigando como pasar datos desde VB a una plantilla de word y ninguno hacia lo q realamente buscaba. hasta que llegue a ustedes.

un saludo desde venezuela...

aprobecho para hacerte una conusulta a ver si sabes: necesito copiar y actualizar una bd a otra, es algo parecido a lo de restuarar bd, pero en vez de borrame la bd actual.. me agrege los datos. no se si me explico...
gracias..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:24.