Cómo enviar correos de combinación de correspondencia a través de Outlook con archivos adjuntos por destinatario
🔍 WiseChecker

Cómo enviar correos de combinación de correspondencia a través de Outlook con archivos adjuntos por destinatario

Necesita enviar correos personalizados con archivos adjuntos que varían para cada destinatario. La función estándar de combinación de correspondencia de Word envía el mismo documento a todos. No adjunta de forma nativa archivos separados por destinatario. Este artículo explica cómo usar una combinación de tipo Directory junto con una macro de VBA para adjuntar archivos únicos desde una carpeta a correos individuales de Outlook.

Puntos clave: Envío de correos personalizados con archivos adjuntos individuales

  • Combinación de directorio de Word + macro de VBA de Outlook: Combina una combinación de tipo directorio que enumera todos los datos de los destinatarios con una macro que crea correos individuales y adjunta archivos según el valor de un campo.
  • Origen de datos con una columna “AttachmentPath”: Cada fila de destinatario debe incluir la ruta completa del archivo adjunto único para que la macro sepa qué archivo adjuntar.
  • La macro se ejecuta desde el documento combinado de Word: Después de que la combinación de directorio rellene una tabla de Word, una ejecución de la macro envía todos los correos y adjunta el archivo correcto para cada fila.

ADVERTISEMENT

Por qué la combinación de correspondencia de Word no puede adjuntar archivos por destinatario de forma predeterminada

La combinación de correspondencia de Word tiene dos tipos principales de salida: Cartas y Mensajes de correo electrónico. La opción Mensajes de correo electrónico envía el documento combinado como cuerpo del correo o como archivo adjunto. Pero adjunta el mismo documento a cada correo. No hay un campo o regla integrado para adjuntar un archivo que cambie por destinatario.

La solución utiliza un tipo de combinación Directory. Una combinación de directorio no crea páginas o correos separados. Rellena una única tabla de Word con una fila por destinatario. Esa tabla luego es procesada por una macro de VBA que lee cada fila, crea un correo de Outlook y adjunta el archivo especificado en la fila.

Lo que necesita antes de comenzar

  • Microsoft Outlook configurado con una cuenta de correo funcional
  • Word 2019, Word 2021 o Word para Microsoft 365
  • Un origen de datos como una hoja de cálculo de Excel o una tabla de Access con columnas para Nombre, Correo electrónico, Asunto y AttachmentPath
  • Una carpeta en su equipo o red que contenga los archivos adjuntos nombrados exactamente como aparecen en la columna AttachmentPath
  • Macros habilitadas en Word: Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros > Habilitar todas las macros

Pasos para configurar el origen de datos y la combinación de directorio

  1. Prepare su origen de datos
    En Excel, cree las columnas: FirstName, LastName, EmailAddress, SubjectLine, AttachmentPath. Rellene AttachmentPath con rutas completas de archivo como C:\Attachments\Invoice_123.pdf. Guarde y cierre el libro.
  2. Abra un nuevo documento de Word en blanco
    Vaya a Correspondencia > Iniciar combinación de correspondencia > Directorio. Esto indica a Word que cree una única tabla con todos los registros.
  3. Seleccione los destinatarios
    Haga clic en Seleccionar destinatarios > Usar una lista existente. Busque su archivo de Excel. En el cuadro de diálogo Seleccionar tabla, elija la hoja que contiene sus datos. Asegúrese de que la primera fila de la hoja contenga los encabezados de columna.
  4. Inserte campos combinados en el documento
    Inserte una tabla de Word con una fila y tantas columnas como necesite. En cada celda, haga clic en Correspondencia > Insertar campo combinado y elija el nombre de columna correspondiente. Incluya una celda para AttachmentPath aunque no aparecerá en el correo final. Este campo indica a la macro qué archivo adjuntar.
  5. Complete la combinación
    Haga clic en Correspondencia > Finalizar y combinar > Editar documentos individuales. En el cuadro de diálogo Combinar en documento nuevo, elija Todos. Word genera un nuevo documento con una fila de tabla por destinatario. Guarde este documento combinado como MergedOutput.docx.

ADVERTISEMENT

Pasos para crear y ejecutar la macro de VBA

  1. Abra el Editor de Visual Basic
    Presione Alt+F11 en Word. En el panel Proyecto, haga doble clic en Normal o en el proyecto del documento actual para abrir un módulo de código.
  2. Inserte un nuevo módulo
    Haga clic en Insertar > Módulo. Pegue el siguiente código de macro en el módulo:
    Sub SendMailWithAttachments()
        Dim objOutlook As Object
        Dim objMail As Object
        Dim objDoc As Document
        Dim objTable As Table
        Dim iRow As Integer
        Dim strTo As String
        Dim strSubject As String
        Dim strAttachment As String
        
        Set objDoc = ActiveDocument
        Set objTable = objDoc.Tables(1)
        Set objOutlook = CreateObject("Outlook.Application")
        
        For iRow = 2 To objTable.Rows.Count
            strTo = objTable.Cell(iRow, 2).Range.Text
            strTo = Left(strTo, Len(strTo) - 2) ' Remove end-of-cell markers
            strSubject = objTable.Cell(iRow, 4).Range.Text
            strSubject = Left(strSubject, Len(strSubject) - 2)
            strAttachment = objTable.Cell(iRow, 5).Range.Text
            strAttachment = Left(strAttachment, Len(strAttachment) - 2)
            
            Set objMail = objOutlook.CreateItem(0) ' olMailItem
            With objMail
                .To = strTo
                .Subject = strSubject
                .Body = "Dear " & objTable.Cell(iRow, 1).Range.Text & vbCrLf & vbCrLf & "Please find your document attached."
                If Dir(strAttachment) <> "" Then
                    .Attachments.Add strAttachment
                End If
                .Send
            End With
            Set objMail = Nothing
        Next iRow
        
        Set objOutlook = Nothing
        Set objDoc = Nothing
        MsgBox "Emails sent successfully."
    End Sub
    

    Nota: Ajuste los números de columna de las celdas para que coincidan con el diseño de su tabla. La columna 1 es la primera columna de su tabla.

  3. Ejecute la macro
    Cierre el editor de VBA. En el documento combinado (MergedOutput.docx), presione Alt+F8, seleccione SendMailWithAttachments y haga clic en Ejecutar. Outlook envía cada correo con el archivo adjunto correcto.

Problemas comunes al enviar correos de combinación de correspondencia con archivos adjuntos

La macro dice “Correo enviado correctamente” pero no llega ningún correo

Outlook puede mover el mensaje a la Bandeja de salida y no enviarlo automáticamente. Abra Outlook, vaya a Archivo > Opciones > Correo y, en Enviar mensajes, asegúrese de que la casilla “Enviar inmediatamente cuando se esté conectado” esté marcada. Como alternativa, cambie la línea de la macro .Send a .Display para revisar cada correo antes de enviarlo manualmente.

Error de archivo adjunto no encontrado

La columna AttachmentPath debe contener la ruta completa exacta. Una letra de unidad faltante, un nombre de carpeta incorrecto o un espacio adicional hacen que la macro omita el archivo adjunto. Verifique la ruta pegándola en el Explorador de archivos de Windows. Si las rutas de archivo contienen espacios, la macro sigue funcionando porque usa la cadena completa.

Outlook no reconoce las direcciones de correo electrónico

La macro lee el texto de la celda incluyendo los marcadores de párrafo. La función Left(strTo, Len(strTo) - 2) elimina los dos caracteres de fin de celda. Si su tabla tiene espacios adicionales o saltos de línea dentro de la celda, use la función Trim: strTo = Trim(Left(strTo, Len(strTo) - 2)).

ADVERTISEMENT

Combinación de directorio vs. combinación de correspondencia estándar para archivos adjuntos

Elemento Combinación de correspondencia estándar (Mensajes de correo electrónico) Combinación de directorio + macro de VBA
Archivo adjunto por destinatario No compatible Compatible mediante el campo AttachmentPath
Contenido del cuerpo del correo Documento combinado o texto Cuerpo personalizado definido en la macro
Complejidad de configuración Baja Moderada
Requiere permisos de macro No Sí
Admite diferentes líneas de asunto Sí Sí
Funciona con Outlook en la web No No

Ahora puede enviar correos personalizados con archivos adjuntos únicos usando Word y Outlook. Pruebe la macro primero con un conjunto pequeño de destinatarios. Para personalizaciones avanzadas, modifique la macro para incluir un cuerpo de correo HTML estableciendo la propiedad .HTMLBody en lugar de .Body. Este método funciona con Word para Microsoft 365, Word 2021 y Word 2019 en Windows.

ADVERTISEMENT