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.
Hola, en un ordenador funciona perfectamente tiene Windows 7 y office 2013, pero en donde realmente lo necesito no funciona, tiene Windows 10 y office 2016. Cuando ejecuto la macro indica que manda los emails pero no lo hace. Por favor como puedo solucionarlo.
Gracias
Probablemente Microsoft haya cambiado las configuraciones de las macros en las últimas versiones de excel. Te recomendamos seguir las recomendaciones de support de microsoft:
https://support.microsoft.com/es-es/office/inicio-r%C3%A1pido-crear-una-macro-741130ca-080d-49f5-9471-1e5fb3d581a8
Saludos
Hola, estimado en una ocación lo ejecuté y si envio, pero ahora estoy intentando hacer el mismo proceso y me dice que envia cero.
Hola, he seguido los pasos y envía los correos, pero sin adjunto 🙁 … que puede ser?
Revisa la ruta
Hola. Muchas gracias, me funciona correctamente y me envía el adjunto pero el correo que llega pierde el formato que tenía el documento-carta fusionado (no pone espacios en párrafo, ni negrita, etc..). ¿Hay alguna manera de solucionarlo? Gracias.
Si es lo que pienso, cuando ingresas en el word por primera vez, y te vas a correspondencia e ingresas en la pestaña le indicas anteriormente no me jalaba muchos cambios en el cuerpo del correo y era por eso.
Espero sirva.
Si es lo que pienso, cuando ingresas en el word por primera vez, y te vas a la pesaña (correspondencia) e ingresas en (iniciar combinación de correspondencia) le indicas (Mensajes de correo electrónico) anteriormente no me jalaba muchos cambios en el cuerpo del correo y era por eso.
Espero sirva.
Para el envío de correos se debe realizar el siguiente cambio en la linea 38
.To = Datarange
coloca:
.To = “” & Datarange
A mi me funcionó.
Alguien me puede ayudar para que en el cuerpo de correo se envíe con los formatos aplicados en word (negrita, cursiva, color fuente, etc); ademas de imagenes. Gracias
Excelente aporte Jairo
¡Un millón de gracias!
eres un crack, eso soluciono el error
Excelente Jairo, muchas gracias por el dato, me funcionó perfecto con ese ajuste
Muchas gracias!! Funcionó con Windows 2017. Llevaba batallando mucho tiempo, saludos.
Muchas gracias amigazo me sacaste mucha pega de encima con esta ayuda!!!!
Mil gracias!!! Estuve horas intentando de varias maneras, gracias por el gran datooo!!!
Me funciona pero la imagen que adjunto en el cuerpo del correo no me sale alguien que me ayude.
Gracias.
Muchisimas gracias por la info.
Pero tengo un pequeño problema.
Los mails me los genera, pero el texto pierde el formato.
No aparece la negrita, ni cursiva.
Agadecería ayuda.
Gracias
Hola, ya pude enviar los adjuntos separados por correo, pero también tengo imágenes adjuntas al texto del correo que ahora no se ven, en lugar de las imágenes me sales “/” no entiendo por qué, ya que en el texto q tengo para enviar por correo si me salen las imágenes adjuntas. Al momento que se envía el correo ya no salen.
Saludos,
Xavier
cordial saludo;
Si quisiera hacer uso de esta herramienta pero hacer envio de correo con copia oculta auna direccion en especifico que ajuste o como deberia hacerlo ?
Hola, buenas tardes.
Tengo el Word N° 1 con dos hojas de prueba, cada una con su cuerpo de mail.
Tengo el Word N° 2 guardado correctamente, con una tabla como marcan las indicaciones, en la primer columna los correos a los que van dirigidos, y en la segunda la ruta en donde encontrará los documentos. “C:\Escritorio\BBBB.pdf” a modo de ejemplo.
Ejecuto la macro desde el Word N° 1 y sale el mensaje de que se han enviado 0 mensajes.
Tengo office 2010.
Qué puedo estar haciendo mal?
Agradezco su ayuda.
Buenas noches
Tengo un problema, lo hice siguiendo los pasos en el equipo de casa y en el equipo de la oficina y en los dos lo pude realizar sin problemas, pero tuve un problema con el equipo de casa y al volverlo a instalar las mismas versione me sucede lo mismo que sucede a la srta. Belen me marca que los mensajes se enviaron pero no es asi.
Me podría ayudar que será lo que estoy haciendo mal?
Muchas Gracias
Al leer algunas respuestas me encontre con la aportacion Jairo, la aplique y me funciono
gracias
Buenas tardes, tengo el mismo problema que la mayoria y que no han resuelto, al cuerpo del correo se le pierde el Formato de la carta original, como hacer para que se envie con el formato original. Gracias
Se debe modificar la line 35 .Body por .HTMLBody a mi me funciono de esa manera.
He probado haciendo este cambio y me sale el texto seguido en el email,. Ahora ni si quiera me sale por párrafos… Hiciste algún otro cambio?
Muchas gracias,
A mi me pasa igual no me sale ni negrita, cursiva, etc. Hice lo de Juan Pablo pero se pierde todo.
Gracias, espero la solución
hola, ayudaaaa
me envia todos los correos al mismo email y con el adjunto correspondiente a ese correo, es el primero de la tabla.
He probado con todas las soluciones aportadas y ninguna me funciona. Tengo Office 365.
El mensaje que aparece es 0 mensajes enviados
Hola, me aparece muy bien el envió del correo, pero yo a diferencia quisiera saber que le podría agregar al código o al listado para poder enviar a dos destinatarios, el principal y uno oculto, espero me pueda ayudar, gracias.
Tu contenido de correo tiene imágenes, le llegan bien a tu destinatario?
Ya vi donde poner para correo oculto
es bajo de
Datarange.End = Datarange.End – 1
.To = Datarange
.Bcc = “tuemail@mail.com”
En mi caso solo lo quería envíar a un solo destinatario oculto
Hola a todos, tengo office 365 y la no me adjunta los archivos, los correos sí los manda pero no los adjuntos…, sabéis como puedo solucionarlo?, muchas gracias.
Oigan alguien que me pueda apoyar. NO aparece activo el botón de “generar mensajes de correo electrónico” solo los de “combinar la imprimir” y el de “combinar en nuevo documento”. Antes si aparecia.
Hola, seguí los pasos al pié de la letra y funcionó perfecto, mil gracias una excelente herramienta!
Buenas noches lo he aplicado y me ha funcionado con el. Pdf, pero el formato del Oficio o carta se pierde, ya sea el tipo de letra, negritas, e imagen. Que tendría que modificar?
Se podría modificar la macro para que fuera un correo gmail en lugar de outlook
Quién sabe cómo agregar un banner al comienzo del correo?
Además de agregar banner necesito agregar pie de firma desde el correo programado a través de vba.
Buenos días:
He seguido los pasos y me funciona. Sin embargo, el correo que se envia es un texto simple y no me deja establecer colores, fotos y formato personalizado. ¿Sabeís como se puede hacer?
Hola, gracias por esta información
Me funciona perfecto pero me lo manda de mi cuenta personal, no puedo hacer que lo envíe desde la cuenta de la institución que está en outlkook
No sé si es porque uso el office 365 o porque la cuenta es gmail
Hola, tengo el mismo problema de varios…
El cuerpo del email que queremos enviar, con el texto,tablas, etc… llega sin el formato del word.. gracias
Yo logré hacer mi envío, cambien la línea 35 como lo mencionó Juan Pablo, en el masivo que yo envié, iba un adjunto y aparte una imagen dentro del cuerpo de texto. Para respetar un poco de estilo, utilicé código html, etc, para dar un poco de fotmato, y la imagen en el cuerpo de texto, la llamé con un . Funcionó muy bien.
Hola! nos puedes indicar como lo hiciste exactamente? esto para los que no conocemos de programación ni en HTML ni en VB
Muy buenas tardes, si halguien pudiera ayudarme a enviar mail de manera masiva con copia a otro correo!!!! por favor
Buenas tardes, agradeceria si me pueden colaborar, ya que al ejecutar la macro me dice que hace el envio de 0 correos.
Hola,
Cambié de un notebook a otro que son idem, en el primero logro enviar correos masivos con adjunto PDF sin problemas, en el2do. notebook a pesar de estar configurado igual al primero no envía correo, se cae en la sentencia .send, el error que arroja es”Outlook no reconoce alguno de los nombres”. Quién me puede ayudar?
“
Hola,
Cambié de un notebook a otro que son idem, en el primero logro enviar correos masivos con adjunto PDF sin problemas, en el2do. notebook a pesar de estar configurado igual al primero no envía correo, se cae en la sentencia .send, el error que arroja es”Outlook no reconoce alguno de los nombres”. Quién me puede ayudar?