Pasar datos de Excel a Word con Macro (Combinar Correspondencia)

En este artículo vamos a ver nuevamente cómo podemos pasar datos de Excel a Word con una macro.  Sin embargo, aunque el titulo indica que podemos usar una macro en Excel, no es necesariamente obligatorio hacerlo. Se puede hacer directamente desde Word con una macro  o incluso manualmente.

Este artículo está relacionado con varios temas o artículos ya vistos, como ser : Impresión Múltiple en Excel con macro (Parte 1), Impresión Múltiple en Excel con macro (Parte 2), Pasar datos de Excel a plantilla de Word con macro, Imprimir en documento de Pdf.

En resumen lo que hacemos es imprimir de una sola vez todos los documentos creados a través de una plantilla de Word y con los datos tomados de una hoja de Excel. Estos datos son las variables de la plantilla.

El elemento principal es la herramienta de Word “Combinar Correspondencia” y a partir de ahí lo único que hacemos es automatizar la tarea ya sea desde Word o desde Excel.

Click en la imagen para ver el video relacionado sino a través de este Link.
Recuerden que en el canal de YouTube “ExcelminiApps” están todos los videos que son complento del blog.

Como hacemos siempre vamos a utilizar una mini aplicación de ejemplo para mostrar la idea.
En este caso utilizamos una plantilla de Word llamada “Credencial”.  Y un documento de Excel que ya habíamos usado en el artículo “Pasar datos de Excel a plantilla de Word con macro”.
Credencial.dotx
Esta es la plantilla de la Credencial, como ven no contiene los datos. Tiene el espacio para el nombre en la parte superior y el nombre de la jornada en la parte inferior, como ejemplo.


Pasar Datos a Excel.xlsm
Como ven es un archivo de Excel habilitada para macros según la extensión.
Tenemos los datos de los asistentes a nuestra jornada y además tenemos la ruta completa de la plantilla de Word.

Esta plantilla no la podemos utilizar como esta porque necesitamos que los datos estén en forma de lista. Entonces creamos una hoja auxiliar donde acomodamos los datos.


La hoja auxiliar no tiene formato y contiene los encabezados de cada columna o campo.


Visto los elementos principales lo que hacemos es crear una macro utilizando la función crear correspondencia.
Para eso vamos a Word, abrimos la plantilla, vamos a programador y elegimos grabar macro.


Luego vamos a la solapa correspondencia , seleccionar destinatarios y luego lista existente.


Luego buscamos la ubicación del archivo de Excel donde estaba nuestra lista auxiliar.


Lo que hizo esta acción es tomar cada encabezado de esa lista como un campo, el cual lo podemos agregar a nuestra plantilla por lo que elegimos el campos de Nombre del Participante de la Jornada y el Nombre de la Jornada. Como estamos grabando una macro a  la vez, me muevo con las direccio nales del teclado para acomodar los campos.


Y listo, tenemos nuestra plantilla con los datos de Excel que son variables. Arriba a la derecha podemos ver la vista previa de cada uno pero no lo usamos para que no se grabe en la macro.


Ahora para finalizar tenemos la opción de imprimir documento o enviar por correo. En este caso queremos imprimir. También se puede utilizar la opción "Editar documentos individuales...". Con esta última opción nos muestra en un solo documento todas las plantillas y lo podemos guardar como un documento único.


Antes de utilizar esta opción debemos asegurarnos de que este predeterminada una impresora de pdf en la lista de impresoras. Sino imprimirá el documento el impresora predeterminada.  Si todo esta correcto te pedirá una ubicación para guardar el Pdf y un nombre. Luego paramos la macro. Y tendremos el resultado esperado.


Macro1
En este caso si la macro grabada se llama macro 1, esta macro hace todo lo que hicimos manualmente en forma automatizada con el archivo de Excel seleccionado. Si cambia el nombre del archivo deberíamos volver a crear la macro o retocar el código. En este caso no recomendable. No es necesario explorar el código de la macro.
Ahora, recuerdan que teníamos un código para pasar los datos de Excel a Word. Vamos a utilizar el mismo código modificado. Este código crea el documento nuevo de Word a travez de la plantilla y ejecuta nuestra macro:

----
Sub toWord()
'ExcelminiApps 2016
'Ruta de la plantilla de word
warch = Hoja1.Range("B23").Text & Hoja1.Range("B24").Text
'Con la variable siguiente definimos que vamos a trabajar con un documento de Word.
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
'Creamos un documento nuevo con la plantilla
objWord.Documents.Add Template:=warch, NewTemplate:=False, DocumentType:=0
'Activa el documento de word
objWord.Activate
 'Ejecutamos la macro de word
objWord.Run MacroName:="macro1"
'Cerramos la variable
Set objWord = Nothing                          
End Sub
---

Como ven se agrego una línea para llamar a la macro de Word llamada “macro1”.
Eso es todo , cuando mediante un botón desde el archivo de Excel ejecutemos la macro “toWord” nos creará nuestro documento único con extensión PDF donde estarán volcados todos los datos.
Esto es muy interesante, práctico y rápido. Como dijimos ni siquiera es necesario crear las macros, pueden utilizar Combinar Correspondencia directamente.
Por otro lado, sino quieren estar elegiendo manualmente la impresora predeterminada al momento de ejecutar la macro , pueden utilizar este código dentro de la macro de Excel.

-----
'Elegir impresora
With Dialogs(wdDialogFilePrintSetup)
    .Printer = "Microsoft Print To Pdf"
    .DoNotSetAsSysDefault = True
    .Execute
End With
---

No se recomienda tocar la macro de Word aunque si tienen ganas de experimentas lo pueden hacer y verán que funciona.
Eso es todo, esperamos les haya gustado. Sigan el blog y el canal. Pueden darle me gusta al artículo también. Saludos!
-------------------------------------- FIN
Recuerden que los artículos algunas veces requieren un mayor o menor nivel de conocimiento en ciertos temas de Excel, por ejemplo formulas avanzadas, macros o VBA, etc. Sin embargo en los artículos se nombran todos los elementos y con esta información podemos hacer nuestras pequeñas investigaciones usando internet, así desarrollamos nuestro conocimiento. Por ejemplo si  utilizamos la función “Y”, que la suponemos conocida, y no sabemos ¿qué es? podemos buscar en internet para ver como se utiliza y cuáles son los componentes. Las mini aplicaciones no son más que la recopilación de muchos elementos para dar forma a una nueva idea.
Pueden descargar algunos ejemplos (plantillas/templates) de la zona de Descargas. Si tienen alguna duda o consulta pueden hacerlo a través del formulario de contacto.
Les recomendamos que sigan el blog por alguno de los medios, mail o por redes sociales, para recibir las actualizaciones y novedades.
¡Éxitos!

Keys:
·         Pasar datos de Excel a Word.
·         Imprimir en Pdf con macro .
·         Combinar Correspondencia en Word
·         Macros de Word y Excel.
·         Mail Merge.
·         How to Use Microsoft Word to Extract Data From Excel.

·         Send data from Exel to Word with macro.

14 comentarios:

Christian Martinez Laserna dijo...

Realmente útil el artículo ya que actualmente estoy haciendo las cosas programa de facturas y me vendría bien conocer como modificar los datos rápidamente y pasarlos de programa a programa para estar bien ordenado

Juan Pablo Torres dijo...

Hola Christian, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, a que te refieres de pasar de programa en programa. Este artículo es para algo bien particular. Después, cada idea tiene una solución.
Esperamos tus comentarios.
Saludos

Hector Aguilar dijo...

Amigo muy buen dia, de antemano lo felicito por este blog que ha sido de gran ayuda, lo realice paso a paso y me ha resultado efectivo; el inconveniente y es en este caso si me pudieras colaborar; es:

Realice las macros de excel en mi equipo, lo que hice fue un formulario el cual se diligencia con datos personales, luegro cree un boton y le asigne la macro, este boton graba los datos en una base de datos luego los abre en mi plantilla de word y lo imprime:

1. hay alguna manera de "anclar" o "unir" la plantilla word con la de excel, para poder enviarla mediante correo electronico.

2. al enviar los archivos (el excel y el .dot) a quien los recibe no le funciona la macro...

Si hubiese alguna forma de solucionar estos inconvenientes, quedare altamente agradecido.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por tus comentarios!
1.En cuanto a tu consulta, esta versión de excel tiene sus limitaciones. Quizás en versiones posteriores se simplifique o se agreguen mejores complementos.
Por otro lado, a que te refieres con "anclar la plantilla de word con la de excel". Cuando sigues este procedimiento ya queda anclado por decirlo así. Vinculado de cierta manera.
2.en el caso de word es distinto que en excel, la plantillas quedan en la pc no se pueden transmitir como se puede en excel.
Esperamos tus comentarios.
Saludos

Hector Aguilar dijo...

Gracias por tu pronta respuesta, amigo me refiero a que si hay alguna manera que yo pueda enviar el archivo mediante correo electronico y la persona que lo reciba pueda trabajar con el, de la misma manera;

Personalmente en una ocasion me enviaron un archivo de excel (solamente) el cual yo diligenciaba un formulario y con un boton le daba imprimir y hacia lo siguiente automaticamente
1. la formacion se guarbada en una base de datos interna del exce
2. abria un word
3. se combinaba los datos
4. se imprimia
5. se cerraba
6. volvia a quedar en el inicio de la hoja y el formulario en blanco para diligenciar mas informacion
repito todo automaticamente, tan solo se veia una especie de pestañeo mientras hacia todo el proceso
trate de mirar el codigo de fuente pero todos los accesos los tenia bloqueado.. espero haberme explicado mejor

Yo logre hacer hacer la misma funcion del archivo que describi anteriormente
1. la formacion se guarbada en una base de datos interna del exce
2. abria un word (tu foro me sirvio de gran ayuda)
3. se combinaba los datos (tu foro me sirvio de gran ayuda)
4. se imprimia (tu foro me sirvio de gran ayuda)
5. se cerraba
6. volvia a quedar en el inicio de la hoja y el formulario en blanco para diligenciar mas informacion.

lo unico que no he logrado es poder enviarlo y que funcione igual sin problemas.

quedo atento

Juan Pablo Torres dijo...

Hola amigo,cómo estas! Gracias por tus comentarios!
En cuanto a tu consulta, te refieres a enviar el libro con las macros?
En ese caso ten cuidado en la opción que te da cuando grabas las macros "en este libro, libro nuevo, o libro de macros personal. Además recuerda que para ejecutarla debe estar en un lugar dentro de la PC.
Esperamos haber sido de ayuda y aguardamos tus comentarios.
Saludos

Anónimo dijo...

Buenas noches:

Llevo 1 semana dando vueltas intentando que desde una MACRO Excel se me abra un word que está enlazado a ese Excel por correspondencia, se actualice, se imprima y se cierre word sin éxito.
Por favor, me podéis decir como lo habéis realizado??, cuando abro el word sin macro sale un mensaje emergente en el que hay que dar a si para que siga la actualización de datos, si le abro desde la word no se actualizan los datos, y para poder imprimir todas las hojas de correspondencia??, como lo hago??.
Muchas gracias de antemano.

Anónimo dijo...

Perdonar, lo acabo de leer y lo he escrito mal.
Cuando abro el word sin macro sale una ventana emergente para continuar con la combinación de los datos de correspondencia, si le abro con la macro de Excel se abre sin combinar con los datos de correspondencia.
Se podría hacer todo desde una macro de Excel??.
Graciassss

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, tienes que probar grabando la macro. Muchas veces en el código se incluye la confirmación.
Esperamos tus comentarios.
Saludos

Ernesto dijo...

hola amigo muchas gracias por tu esfuerzo de subir esta info tan valiosa, tengo una pregunta que hacer, hay manera de que en el archivo de word se abran todos los diplomas o reconocimientos de una sola vez y en el mismo archivo de word, por decir que en mi tabla de excel tengo 30 asistentes y quiero generar los 30 diplomas de una sola vez y no de uno en uno, agradezco tu apoyo en esta solicitud. Saludos

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, se podría solo hay que hacer la automatización mediante una macro, supongo que se pueden apilar el texto de la hoja separados por un salto de página. Habría que probar.
Esperamos tus comentarios.
Saludos

Juan Pablo Torres dijo...

Amigos, Gracias al comentario de Ernesto agregamos un nuevo párrafo a la publicación que es el siguiente:

También se puede utilizar la opción "Editar documentos individuales...". Con esta última opción nos muestra en un solo documento todas las plantillas y lo podemos guardar como un documento único.

Si se fijan en las opciones de combinar correspondencia. Una de ellas es "Editar documentos individuales...". Así que pueden modificar la macro para que se aplique esta opción y guardar como documento único de Word.

Saludos

mafe dijo...

Buen Día, si tengo varios cuadros en una misma hoja de word y quiero alimentar cada cuadro con unos datos de una lista en el excel como lo podría hacer...

En cada hoja aproximadamente tengo 6 cuadros y cada una con la información siguiente:

nombre:
cedula:
direccion:

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, sirve el mismo procedimiento y el del artículo que sigue. Solo tienes que crear la plantilla de acuerdo a lo que quieres mostrar. Esperamos tus comentarios.
Saludos