La utilización de Word y Outlook para combinar correspondencia es excelente, pero limitada cuando nos enfrentamos a un lista de, por ejemplo, 100 emails personalizados con 1 archivo diferente para cada destinatario… Por defecto, la combinación no se puede hacer, pero si trabajamos un poco, podremos preparar una macro que haga el trabajo por nosotros.
Necesitaremos un par de ingredientes:
- MS Word 2007, 2010, 2013 o superiores
- MS Outlook 2007, 2010, 2013 o superiores
Tiene varias limitaciones de formato, pero es un mal menor con el que tendremos que vivir… El tiempo que nos ahorraremos suplirá el inconveniente de no poder añadir una imagen de cabecera en el email, no?
Continuamos tras el salto, para no saturar la ventana principal…
PROGRAMAR PARA COMBINAR CORRESPONDENCIA
En primer lugar, vamos a tener que localizar la pestaña programador en Word (entra en este enlace si no la encuentras). En Opciones de Word…
Aceptamos, cerramos y ya vemos la ficha programador en la cinta de opciones… nos centramos en el primer bloque de opciones.
Le damos al botón de Macros, escogemos un nombre como “combina”, y le damos a Crear.
Veremos ahora una ventana como esta…
Macro para combinar correspondencia
Vamos a vaciarla y pegarle este código que tenemos aquí abajo (os marco en rojo la dirección de email, que deberéis cambiar por la vuestra para evitar posibles errores):
Sub combina()
Dim Source As Document, Maillist As Document, TempDoc As Document
Dim Datarange As Range
Dim i As Long, j As Long
Set objEmail = CreateObject("CDO.Message")
objEmail.from = "info" @educadictos.com
Dim bStarted As Boolean
Set oOutlookApp = CreateObject("Outlook.Application")
' Dim oItem As Outlook.MailItem
Dim mysubject As String, message As String, title As String
Set Source = ActiveDocument
' Check if Outlook is running. If it is not, start Outlook
On Error Resume Next
Set oOutlookApp = GetObject(, "Outlook.Application")
If Err <> 0 Then
Set oOutlookApp = CreateObject("Outlook.Application")
bStarted = True
End If
' Open the catalog mailmerge document
With Dialogs(wdDialogFileOpen)
.Show
End With
Set Maillist = ActiveDocument
' Show an input box asking the user for the subject to be inserted into the email messages
message = "Escribe el asunto que llevarán todos los emails" ' Set prompt.
title = " Email Subject Input" ' Set title.
' Display message, title
mysubject = InputBox(message, title)
' Iterate through the Sections of the Source document and the rows of the catalog mailmerge document,
' extracting the information to be included in each email.
For j = 1 To Source.Sections.Count - 1
Set oItem = oOutlookApp.CreateItem(olMailItem)
With oItem
.Subject = mysubject
.Body = Source.Sections(j).Range.Text
Set Datarange = Maillist.Tables(1).Cell(j, 1).Range
Datarange.End = Datarange.End - 1
.To = Datarange
For i = 2 To Maillist.Tables(1).Columns.Count
Set Datarange = Maillist.Tables(1).Cell(j, i).Range
Datarange.End = Datarange.End - 1
.Attachments.Add Trim(Datarange.Text), olByValue, 1
Next i
.Send
End With
Set oItem = Nothing
Next j
Maillist.Close wdDoNotSaveChanges
' Close Outlook if it was started by this macro.
If bStarted Then
oOutlookApp.Quit
End If
MsgBox Source.Sections.Count - 1 & " messages have been sent."
'Clean up
Set oOutlookApp = Nothing
End Sub
Una vez pegado… guardamos y cerramos.
Ahora para combinar correspondencia necesitaremos otros 2 archivos Word…
- Documento 1: Cuerpo del email que queremos enviar, con el texto, nombres, etc… En resumen, el email que vamos a combinar. Supondré que ya sabes hacer combinación, así que no te diré nada más. Tú simplemente ten el email preparado para enviar sin adjuntos.
- Documento 2: Otro word con una tabla de 2 columnas, una con el email del destinatario (que ha de coincidir con uno de los destinatarios del documento 1, lógicamente), y otra con la ruta en tu ordenador del documento que ha de recibir. Y una fila por cada destinatario… algo así:
[alert]La tabla no lleva encabezados.[/alert]
Este Documento 2 lo guardaremos con un nombre reconocible, como “Tabla de adjuntos”, o similar. Y ahora viene lo bueno…
- En el Documento 1, ya escrito y con los campos de combinación cubiertos, le damos a “Finalizar y combinar” y “Editar documentos individuales”.
- En el documento donde vemos el resultado de los emails, nos vamos a la pestaña Programador, le damos al botón de Macros, seleccionamos “Combina” y le damos a ejecutar.
- La macro nos pedirá que le indiquemos dónde está el Documento 2, así que lo llevamos hasta el nuestro y le damos a aceptar. (Este documento tiene que estar cerrado, o la macro dará error).
- Ahora nos pide que añadamos el asunto que llevarán los emails. Aceptamos y listo… Si no tenemos Outlook abierto, lo abrirá, y si ya lo tenemos abierto, irá enviando los emails con los adjuntos rápidamente hasta darnos el resultado de los envíos. Una vez termine, si Outlook estaba abierto, lo dejará abierto, y si estaba cerrado, lo cerrará.
Podéis hacer las pruebas para combinar correspondencia vosotros mismos, veréis que es una macro impresionante
Si queréis añadir más de 1 adjunto, en lugar de tener 2 columnas: destinatario/ruta de archivo, tenemos que tener 3: destinatario/ruta de archivo1/ruta de archivo2… Aunque esta opción no la he probado, prefiero añadirle un archivo único, que puede ser un ZIP con los documentos que vaya a recibir cada destinatario. Cuantas menos cosas puedan dar problema, mejor.
Excelente Aporte, funciona de Maravilla!!!!!!
hola, amigos, lo efectue y si funciona de maravilla, solo como aporte hice varias pruebas, solo deben tener cuidado que en documento 2, donde esta el correo de destinatario y la ruta del archivo, no debe contener espacios.
sls y gracias a los amigos por el excelente aporte.
atte.,
Hola! A mi me dice que el mensaje al destinatario es enviado, pero nunca lo recibo ni en la bandeja de entrada del receptor ni en la de salida del emisor….. quién puede ayudarme?
Hola Gaby, lo ideal es que revises la configuración del correo, para ver exactamente la lista de direcciones a quien envías esa combinación de correspondencia. Saludos
Buenas tardes amigo, yo estoy suscrito a su pagina y veo siempre sus vídeos, los cuales me han sacado de muchos apuros y lo mejor aprendizaje, hace tiempo le escribí ya que necesito enviar por correo varios archivos adjuntos, es decir, luego de hacer la correspondencia combinada, tengo al rededor de 40 archivos diferentes, (son información de calificaciones de alumnos) y se deben de enviar a 40 personas diferentes, he intentado y nada, le agradezco su ayudaaaa. mil gracias de antemano, ya que observo en los comentarios que otras personas lo han logrado…
si debes personalizar cada archivo y cada envío no te recomiendo combinar la correspondencia jiovanny.
saludos
Buenas amig@, creo que no me explique bien, ya realice la combinación de correspondencia, ya mis archivos están como los deseo… hasta guardado en PDF, lo que requiero es enviar esos archivos a personas especificas, es decir, el archivo boleta1.pdf le corresponde a pedro Perez, la boleta2.pdf le corresponde a maría vargas, y así sucesivamente… esa es la ayuda que necesito.. mil gracias de antemano…
Este proceso no te permite asociar diversos archivos, debe ser el mismo.
Buen dia, Osiel me gustaría saber como lo hiciste ya que realmente lo necesito y me da fallas, sabría agradecer mucho tu ayuda….
A mi me funcio en un principio muy bien, pero despues no adjuntaba archivos (cabe mencionar que es un archivo diferente para un destinatario diferente) me di cuenta que me faltaba un espacio en la direccion del archivo de mi PC ya que en algun momento cambie la direccion, despues el problema fue que decia que mande 3 mails de tres destinos y solo mandaba 2 tuve que adicionar una linea de titulos y una debajo en blanco de los tres mails y solo asi me funciono, saludos.
Estamos a 2017 y recién leo este aporte que dicen que funciona de Maravilla pero a mí no me funciona. Supongo que con el Outlook 2010 la cosa cambia bastante. ¿alguien me podría ayudar?
Hola. Muchas gracias por tu post. Lo he puesto en práctica y no estoy segura de que me haya funcionado. Aunque desde word, al ejecutar la macro, se me abre una ventana donde dice “23 emails have been sent” después en outlook no los tengo en la bandeja de salida. ¿Quiere decir esto que no se han enviado? Gracias. Saludos!
Hola!
Mil Gracias, sigo todos tus pasos me dice que si se han enviado correos, pero no los recibe, ni los tengo en la bandeja de enviados, hay algo por hacer?
No visualizo los correos
me pasa lo mismo, encontraste como solucionarlo?
Pudiste solucionarlo?
como lo hiciste?
Saludos
Estimado Brais, excelente post!!!
Quisiera saber si existe la posibilidad que al enviar el correo, se envíe como HTML y no como un mensaje sin formato de Texto.
Le quedaría muy agradecido por su ayuda.
Hola! yo engo el miso issue. Quiero enviar el Email en formato HTML. Como puedo cambiar el codigo para que se envie asi?
Excelente, muchas gracias !!
Buenísmo el artículo:
Una duda, que supongo que será así: las nombres de los destinatarios que se pusieron en el cuerpo del correo como campo combinado…tienen que estar en el mismo orden (en la tabla) que la tabla que se hace con la ruta de los archivos que se van a adjuntar??.
Un Saludo y muchas gracias por este post.
Muchas gracias, lo he probado y funciona estupendamente.
Únicamente existe un pequeño problema: tras aplicar la macro se pierde el formato del cuerpo del mensaje (las negritas, subrayados, imágenes, etc). ¿Podría modificarse de alguna manera para que ésto no ocurriera?
Gracias de nuevo por adelantado.
Saludos
Hola SERCH, quería saber si habias encontrado la manera de conservar los formatos del cuerpo del mensaje. Desde ya muchas gracias. Gabriel
Hola. El autor advierte en el texto que se modifica el formato y que no hay o no ha encontrado forma de hacerlo aún. Considero como él que es un mal menor considerando el tiempo ganado en poder enviar adjuntos individuales en forma masiva. Yo he estado haciendo pruebas sin éxito del envío en esas condiciones pero parece hago algo mal. Lo intentaré de nuevo.
Buenas amigo como pudiste hacerlo, necesito de su ayuda mil gracias de antemano…
Es muy complicado ayudaros en la distancia, Leonardo y Search os recomiendo contactar con un informático especialista que pueda chequear vuestro proceso.
Hola, hace unos días la macro dejo de funcionar, ya que al correr la macro ya no genera ningún correo en la bandeja, me podrías apoyar por favor.
Tengo windows 8 y office 2013
¡Excelente tutorial!, lo hice y me funciono, gracias y saludos.
Hola. Pues yo lo he intentado y me da error con lo de “Outlook”. Utilizo el Windows 7 y la aplicación para el mail es Windows Live Mail. He cambiado el “Outlook” por el “Windows Live Mail” pero tampoco va. ¿Qué puedo hacer? Gracias anticipadas.
Hola. He intentando hacerlo pero no me sale. Utilizo el Windows Live Mail y la macro da error. He puesto “windowslivemail” en lugar de “Outlook” pero no va. ¿Tengo que instalar el Outlook, si o sí? El sistema operativo es Windows 7. Gracias anticipadas.
Hola
Me pareció excelente la macro … ya la probé y funciona muy bien … pero como hacer para que no cambie le formato del cuerpo del correo?
en office 2013 no funciona correctamente, hay que añadir un cambio en la macro. en la fila dónde va el destinatario hay que concatenar el destinatario con un espacio en blanco (????):
original:
.To = Datarange
modificado:
.To = “” & Datarange
si se quiere un cc:
.cc = “correo@correo.com”
Excelente detalle, asi funciona bien en 2013
Probé la macro pero solamente adjunta el archivo al primer destinatario. Alguien que me pueda ofrecer una solución por favor?
gracias, perfecto, con esto funciona bien,
Excelente, gran aporte!!..funciona a la perfección
Hola Arturo,
con este aspecto al que te refieres con el CC, es posible incluir uno o dos “CC” para cada email al cual se está enviando correo?
O cual es la capacidad que se adquiere en este sentido.
Gracias por tu apoyo!
Arturo, el dato para funcionar en office 2013 es correcto, fue de gran ayuda, muchas gracias.
estimados, genial el asunto pero al ejecutar la macro me sale un error en el OBJEMAIL.FROM
No sabes cuanto me ha sido util esta información. Te lo agradezco eternamente!
Agradezco mucho esta macro !!!! y quisiera entender como hacer para que se envien los correos en formato HTML.
Muchas gracias. Me ha sido muy útil.
Me temo que todos tenemos el mismo problema. Si alguien encuentra una solución que lo comparta por favor. Gracias.
hola muy buena la macro, pero tengo el siguiente inconveniente al combinar , en el campo cuando se combina el destinario no me concuerda con el adjunto y el correo al que debe enviar, y los coloque en orden.
funciona pero como puedo hacer que la firma del correo me aparezca en los enviados?, y que en la combinación de correspondecia me puedan aparecer imágenes que están en el documento?
gracias!!
Solucionaste el problema?
me pasa lo mismo
¡Excelente tutorial!, lo hice y me funciono a la perfección.
Pero como a todos he perdido el formato y las imágenes de la firma.
¿Alguien sabe como solucionarlo?
gracias y saludos.
a mi con office 365 2016 no me manda nada de nada, siempre dice 0 mensajes mandados
GRACIAS!!!
Eres súper increíble, en la oficina hemos dejado la prehistoria gracias a este post. =D
Nos alegra que os haya podido ayudar! Saludos.
Hola, he probado la macro en word 2013 y funciona en parte añadiendo las modificaciones, consigo enviar un correo pero no me adjunta el fichero. Envia el correo sin adjunto. Gracias
Hola,
Esto permite combinar correspondencia tanto el el email como en el fichero adjunto? O estos últimos los debemos crear de antemano y se envían cada uno a su destinatario al hacer la combinación?
Les agrego un punto que puede ayudar,
Si enviamos los mails con la macro puede que en algunos casos recibamos un mensaje de chkusr por generar mails muy rapido para envio y asume que somos un robot. para evitar este mensaje en el mail hay que agregar la funcion sleep despues del .send
Declaramos primero_
Declare Sub Sleep Lib “kernel32.dll” (ByVal dwMilliseconds As Long)
y luego del .send agregamos sleep(5000) para generar un retardo entre mail y mail.
Gracias
Hola Brais
Me has salvado!!! Excelente tu post, de mucha ayuda y ademas mega fácil. Normalmente en mi trabajo utilizo muchísimo esta herramienta.
Me ha funcionado perfectamente pero ahora necesito adjuntar varios archivos no sólo uno. Cómo podría hacerlo?
Sería ideal me pudieras ayudar.
Gracias de antemano
¿Conseguiste solucionar esto? A mí me pasa lo mismo
Hola Almudena, desgraciadamente Brais no está actualmente escribiendo para nosotros, confiamos en que más pronto que tarde podamos volver a tenerlo entre nuestros autores, pero por lo que veo otros lectores han propuesto diferentes opciones a tu consulta en el resto de comentarios, espero que te pueda ayduar! Muchas gracias por leernos y comentar.
Muy bueno!!, adjunta el o los archivos (coloqué una columna extra para dos archivos adjuntos) a la perfección, solo tengo una duda… ¿por qué los mails enviados no llevan la imagen de firma que coloqué en mi archivo combinado?
🙁
Eeeehh!!! Lo logré!! 😀 Ohh si!!
Para enviar el correo combinado junto con n cantidad de archivos adjuntos y firma de imagen, hay que hacer varios cambios.
Primero: En el documento donde van el/los archivo(s) adjunto(s) agregar una columna extra exclusivamente para el archivo de imagen que se supone es la firma, y referenciarla tal cual lo hicieron con su o sus archivos adjuntos.
Segundo: Preparar el archivo que tiene el texto (es decir el documento combinado) en formato de HTML, esto es hacerlo con etiquetas y es ahí donde se tiene que especificar donde va la firma (repito, con etiquetas de html). no es muy dificil yo no sé nada de programación en HTML pero surfeando en internet te encuentras tutoriales que te explican rapido lo que necesitas.
Tercero: en la macro se debe de cambiar .Body por .HTMLBody
hechos esos cambios el procedimiento es exactamente el mismo que se explica en este tutorial.
Espero que aún le sea a alguien de utilidad
Saludos
Estimada pero en que punto de la macro se hace ese cambio
Hola amigo, me podrías ayudar estoy apunto de lograrlo pero me pierdo un poco he logrado que me mande el mail (casi ordenado) + los 2 adjuntos en pdf. pero el mail me cambia la foto de firma por / y es lo unico en que fallo.
Buenas, en donde tengo que poner las etiquetas HTML? En el documento o en la macro, Gracias
Como lo lograste MIKEL??? Podrias subir el paso a paso mas que todo preparar el archivo en html.
Hola, Mikel.
Seguí tus pasos para lo de la firma, pero me he detenido en lo de las etiquetas. Cuando quiero poner una etiqueta de firma, debajo del saludo, me vuelve a abrir el documento de Base de Datos, es decir, el de direcciones de correo electronico.
¿Cómo etiquetaste la firma?
Esta fue mi solución.
Aunque la firma es detectada como un elemento que atenta contra la confidencialidad del receptor y sólo es visible cuando das clic en “Descargar imágenes”.
Les dejo el copy paste del cuerpo de mi correo de prueba:
Buen día, Lic. Garza.
Le saludo con mucho gusto, esperando se encuentre bien.
Envío nuestra lista de productos actualizada para que la considere.
Quedo a su entera disposición para lo que necesite.
¡Saludos!
¡Bendiciones!
Esta fue mi solución.
Aunque la firma es detectada como un elemento que atenta contra la confidencialidad del receptor y sólo es visible cuando das clic en “Descargar imágenes”.
Les dejo el copy paste del cuerpo de mi correo de prueba:
Buen día, Lic. Fernanda Garza.
Le saludo con mucho gusto, esperando se encuentre bien.
Envío nuestra lista de precios actualizada para que la considere.
Quedo a su entera disposición para lo que necesite.
¡Saludos!
Claro, quitando los saltos de línea.
¡Bendiciones!
No funciona. Hice todo tal cual lo mencionas, y nada.
Comienzo a estresarme… 🙁
Gracias!!
Me funcionó perfecto.
Lo único que no me gusta es que las imágenes van a quedar tanto en el cuerpo del mensaje, como en documento adjunto.
Pero al menos ya se ve con formato e imágenes.
Saludos.
Hola Mikel.
Te entiendo super, pero tu nos dices que en el archivo word de “tabla de adjunto” coloquemos la ruta de la imagen de la firma; en la macro en que parte nombramos o llamamos esta imagen.
Te agradezco de antemano tu respuesta
Muchas gracias por su colaboración finalmente lo logre tambien, Mikel de dio una luz enorme aunque no se explico con mucha claridad, les termino de explicar que deben diseñar por medio de lenguaje HTML su correo incluyendo las imagenes tipo de texto y todo lo necesario, luego usan ese texto de HTML para reemplazar todo lo escrito en el archivo convinado. Este cambio es escencial:
“Tercero: en la macro se debe de cambiar .Body por .HTMLBody
hechos esos cambios el procedimiento es exactamente el mismo que se explica en este tutorial.”
y el outlook toma el texto HTML y lo convierte en lo que se supone que hace el HTLM tampoco soy experto en el tema pero lo logre!!
Gracias Mikel!, gracias todos
Buenas tardes Lo logré tabién y queda perfecto con todo el formato que quieras y con todos los adjuntos que quieras, lo hice gracias a los comentarios de Mikel y Johan, primero Mikel con lo de cambiar .Body por .HTMLBody y luego Johan diciendo que debemos cambiar todo lo que queramos que vaya en el cuerpo del correo, lo que yo agregaría es que para hacer esto, se puede hacer muy facil en esta página que sirve para convertir todo a HTML, es decir, después de que tienes todo en word con el formato que tu quieres (color de letra, negritas, cursivas, fotos, firma, etc) lo copias todo y lo pegas en https://wordtohtml.net/
No adjunta los documentos en pdf
Gracias por esta Macro!! Pero tengo un problema. en el Word hay el logo de la empresa y no me sale en el cuerpo del email. Alguien me puede ayudar por favor??