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.

184 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

Deja una respuesta

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