programador - combinar correspondencia

Combinación de correspondencia con archivos adjuntos

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…

programador - combinar correspondencia

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.

combina - combinar correspondencia

Veremos ahora una ventana como esta…

macros combinar correspondencia

 

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í:

 

tabla - combinar correspondencia

[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…

  1. En el Documento 1, ya escrito y con los campos de combinación cubiertos, le damos a  “Finalizar y combinar” y “Editar documentos individuales”.
  2. 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.
  3. 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).
  4. 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.

 

acceso a curso de word avanzado sin requisitos

217 Comentarios

  • 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

  • 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

  • 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

    • 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.

    • 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.

    • 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?

  • 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada.