Necesita enviar documentos personalizados a muchos destinatarios, pero cada persona debe recibir su propio archivo PDF. Una combinación de correspondencia estándar en Word produce un único documento combinado con todos los registros en páginas separadas. Dividir ese PDF combinado manualmente lleva demasiado tiempo cuando tiene cientos de destinatarios. Este artículo explica cómo usar una macro de Word para ejecutar una combinación de correspondencia y guardar cada registro como un archivo PDF independiente de forma automática. Aprenderá los pasos exactos para configurar la combinación, ejecutar el código VBA y solucionar errores comunes.
Puntos clave: Combinación de correspondencia a PDF individuales en Word
- Correspondencia > Iniciar combinación de correspondencia > Asistente para combinar correspondencia paso a paso: Prepara el documento principal y lo conecta a su origen de datos.
- Alt+F11 para abrir el editor de VBA: Donde pega la macro que recorre cada registro y exporta un solo PDF.
- ActiveDocument.MailMerge.DataSource.ActiveRecord y ExportAsFixedFormat: Los dos métodos de VBA que iteran los registros y guardan cada uno como un archivo PDF.
Cómo funciona la combinación de correspondencia a PDF basada en macro
La función estándar de combinación de correspondencia en Word combina todos los registros en un solo documento. Para obtener un PDF por destinatario, necesita una macro de Visual Basic for Applications que realice la combinación registro por registro. La macro recorre cada registro del origen de datos, ejecuta la combinación para ese único registro y llama al método ExportAsFixedFormat para guardar el resultado como PDF. Después de guardar, cierra el documento combinado sin guardar cambios y pasa al siguiente registro. Este proceso requiere un documento principal configurado correctamente con campos de combinación y un origen de datos conectado, como una hoja de cálculo de Excel, contactos de Outlook o una base de datos de Access. No se necesita software de terceros.
Requisitos previos
Antes de ejecutar la macro, confirme lo siguiente:
- Su documento principal contiene todos los campos de combinación y está guardado en su unidad local o en la red.
- Su origen de datos está conectado y es accesible. Para Excel, el libro debe estar cerrado durante la combinación o la macro puede fallar.
- Tiene permiso para crear archivos en la carpeta de salida que especifique en la macro.
- Las macros están habilitadas en Word. Vaya a Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros y seleccione Habilitar todas las macros o Habilitar macros de VBA. Desactive la notificación de macros si lo desea.
Pasos para configurar la combinación de correspondencia y ejecutar la macro de VBA
Siga estos pasos en orden. No omita la configuración de la combinación de correspondencia: la macro producirá PDF en blanco si el documento principal no tiene campos de combinación ni conexión de datos.
Paso 1: Prepare su documento principal y origen de datos
- Cree o abra el documento principal
Abra un documento nuevo en blanco o una plantilla existente. En la pestaña Correspondencia, haga clic en Iniciar combinación de correspondencia y elija Cartas, Mensajes de correo electrónico o Directorio según su tipo de salida. Cartas es la opción más común para PDF individuales. - Conecte el origen de datos
Haga clic en Seleccionar destinatarios > Usar una lista existente. Busque su archivo de Excel, base de datos de Access o Contactos de Outlook. Si usa Excel, seleccione la hoja de cálculo que contiene los encabezados de columna. En el cuadro de diálogo Seleccionar tabla, confirme que la casilla La primera fila de datos contiene encabezados de columna esté marcada. - Inserte campos de combinación
Coloque el cursor donde debe aparecer cada campo. Haga clic en Insertar campo combinado y elija el nombre de la columna en la lista. Repita para todos los campos como Nombre, Apellido, Dirección, etc. Agregue cualquier texto estático y formato alrededor de los campos. - Obtenga una vista previa y guarde el documento
Haga clic en Vista previa de resultados en la pestaña Correspondencia para verificar que los datos aparezcan correctamente. Guarde el documento con un nombre descriptivo. Este es el archivo que la macro usará como origen.
Paso 2: Abra el editor de VBA e inserte la macro
- Abra el editor de VBA
Presione Alt+F11 en su teclado. En el panel Explorador de proyectos a la izquierda, busque el nombre de su documento en Normal o Proyecto. Si el Explorador de proyectos no está visible, presione Ctrl+R para mostrarlo. - Inserte un nuevo módulo
Haga clic con el botón derecho en cualquier lugar dentro del panel Proyecto bajo el nombre de su documento. Elija Insertar > Módulo. Se abre una ventana de código en blanco. - Pegue el código de la macro
Copie la siguiente macro y péguela en la ventana del módulo:
Sub MailMergeToIndividualPDFs()
Dim MainDoc As Document
Dim DataSource As MailMergeDataSource
Dim i As Long
Dim RecordCount As Long
Dim OutputFolder As String
Dim FileName As String
Set MainDoc = ActiveDocument
Set DataSource = MainDoc.MailMerge.DataSource
OutputFolder = "C:\PDFOutput\"
' Change the path above to your desired folder. Include trailing backslash.
If Dir(OutputFolder, vbDirectory) = "" Then
MsgBox "Output folder does not exist: " & OutputFolder & vbCrLf & _
"Create the folder or change the path in the macro.", vbExclamation
Exit Sub
End If
RecordCount = DataSource.RecordCount
For i = 1 To RecordCount
DataSource.ActiveRecord = i
If DataSource.ActiveRecord = wdNoDataLine Then
GoTo NextRecord
End If
With MainDoc.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
.Execute Pause:=False
End With
FileName = OutputFolder & "Recipient_" & i & ".pdf"
' Change the file naming pattern above if needed. You can use merge fields.
ActiveDocument.ExportAsFixedFormat _
OutputFileName:=FileName, _
ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=False, _
OptimizeFor:=wdExportOptimizeForPrint, _
Range:=wdExportAllDocument
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
NextRecord:
Next i
MsgBox "Mail merge complete. PDFs saved to " & OutputFolder, vbInformation
End Sub
Edite la ruta OutputFolder para que coincida con su sistema. Use una carpeta en la que tenga acceso de escritura. El ejemplo nombra los archivos Recipient_1.pdf, Recipient_2.pdf, etc. Puede cambiar la línea FileName para usar el valor de un campo de combinación, por ejemplo: FileName = OutputFolder & DataSource.DataFields("LastName").Value & "_" & DataSource.DataFields("FirstName").Value & ".pdf". Asegúrese de que los nombres de los campos coincidan exactamente con los encabezados de sus columnas.
Paso 3: Ejecute la macro
- Cierre el editor de VBA
Presione Alt+Q o haga clic en el botón Cerrar. Volverá a su documento principal. - Ejecute la macro
Presione Alt+F8 para abrir el cuadro de diálogo Macros. Seleccione MailMergeToIndividualPDFs en la lista y haga clic en Ejecutar. Word procesa cada registro, crea un documento combinado para ese único registro, lo exporta como PDF y cierra el documento combinado. Aparece un cuadro de mensaje cuando se crean todos los PDF. - Revise la carpeta de salida
Abra la carpeta que configuró en la macro. Verifique que los PDF existan y contengan el contenido personalizado correcto.
Problemas comunes al ejecutar la macro
La macro produce PDF en blanco
El documento principal no tiene conexión de datos o el origen de datos no está seleccionado. Vaya a Correspondencia > Seleccionar destinatarios y verifique que su lista esté adjunta. Vista previa de resultados debe mostrar datos antes de ejecutar la macro. Si el origen de datos es un archivo de Excel, asegúrese de que el archivo esté cerrado durante la ejecución de la macro.
Error 5152: No se puede guardar el archivo
La carpeta de salida no existe o no tiene permisos de escritura. Cree la carpeta manualmente o cambie la ruta OutputFolder en la macro a una ubicación existente, como el escritorio. Use una ruta sin espacios si es posible.
Solo se combina el primer registro
La macro puede detenerse si el origen de datos contiene filas vacías o si la propiedad ActiveRecord no avanza. Compruebe que su origen de datos no tenga filas en blanco entre registros. Agregue una línea On Error Resume Next después de la línea For i si el problema persiste, pero pruébelo con cuidado.
Word parece bloquearse o ralentizarse
Procesar cientos de registros puede tardar varios minutos. La macro abre y cierra un nuevo documento por cada registro. Para acelerar el proceso, desactive la actualización de pantalla agregando Application.ScreenUpdating = False al inicio de la macro y Application.ScreenUpdating = True antes de la línea MsgBox final.
Método de macro vs. Guardar como PDF manual
| Elemento | Método de macro | Guardar como PDF manual |
|---|---|---|
| Tiempo para 100 registros | 2–5 minutos | 20–40 minutos |
| Riesgo de error humano | Bajo | Alto |
| Flexibilidad de nombres de archivo | Personalizable mediante VBA | Renombrar manualmente cada archivo |
| Requiere conocimientos de VBA | Sí, solo copiar y pegar | No |
| Funciona con cualquier origen de datos | Sí | Sí, pero con división manual |
El método de macro es la única forma práctica de producir un PDF por destinatario a partir de una combinación de correspondencia en Word sin herramientas de terceros. La división manual después de una combinación estándar es propensa a errores y lenta para más de unos pocos registros.
Ahora puede ejecutar una combinación de correspondencia que genere archivos PDF individuales para cada destinatario de su origen de datos. Pruebe la macro primero con un conjunto pequeño de tres a cinco registros. Después de confirmar la salida, ajuste el patrón de nombres de archivo para incluir nombres de destinatarios en lugar de números. Para un uso avanzado, modifique la macro para guardar en una carpeta de red o para agregar marcas de fecha en el nombre del archivo.