Cuando ejecuta una combinación de correspondencia en Word, la salida predeterminada es un solo documento con una página por registro. Guardar cada registro como un archivo separado con un patrón de nombre de archivo personalizado, como “Factura_12345_JuanPerez.docx”, requiere algunos pasos adicionales. Word no ofrece un cuadro de diálogo integrado para nombrar automáticamente los archivos combinados. Este artículo explica cómo usar una macro de Visual Basic para Aplicaciones para guardar cada registro combinado con un nombre de archivo que combine texto estático y valores de campo de su origen de datos.
Puntos clave: Guardar la salida de combinación de correspondencia con nombres de archivo personalizados
- Alt+F11 para abrir el editor de VBA: Acceda al entorno de macros donde escribirá el código de automatización del nombre de archivo.
- MailMerge.DataSource.DataFields(“FieldName”).Value: Sintaxis de VBA para recuperar un valor de campo específico del registro de combinación actual para usarlo en el nombre de archivo.
- ActiveDocument.SaveAs2 FileName:=path & filename: Comando que guarda el registro actual como un nuevo documento con su nombre personalizado.
Cómo maneja Word la salida de combinación de correspondencia
De forma predeterminada, la función de combinación de correspondencia de Word genera todos los registros en un solo documento continuo. Cada registro comienza en una nueva página o salto de sección. Este documento único es adecuado para imprimir o enviar por correo electrónico como un lote, pero no crea archivos individuales. Para guardar cada registro como un archivo separado con un patrón de nombre de archivo personalizado, por ejemplo, combinando un ID de registro con un nombre, debe automatizar el proceso con una macro. La macro recorre cada registro, extrae los valores de campo, construye una cadena de nombre de archivo y guarda el registro actual utilizando el método SaveAs2. Antes de escribir la macro, debe completar la configuración de la combinación de correspondencia: conectar con su origen de datos, insertar los campos de combinación en el documento principal y obtener una vista previa de los resultados para confirmar que los campos aparecen correctamente.
Requisitos previos para la macro
Antes de ejecutar la macro, confirme que los siguientes elementos estén en su lugar:
- Su origen de datos (hoja de cálculo de Excel, base de datos de Access, contactos de Outlook u otro) está conectado al documento principal.
- Los campos de combinación están insertados en el documento donde desea que aparezcan los componentes del nombre de archivo personalizado.
- Conoce los nombres exactos de los campos que utilizará en el patrón de nombre de archivo. Los nombres de campo distinguen entre mayúsculas y minúsculas en VBA.
- Tiene una carpeta de destino donde se guardarán los nuevos archivos. Cree la carpeta si no existe.
- La configuración de seguridad de macros le permite ejecutar código VBA. Establézcala en Habilitar todas las macros temporalmente o firme digitalmente su macro.
Pasos para crear y ejecutar la macro de nombre de archivo personalizado
Siga estos pasos para escribir una macro que guarde cada registro de combinación de correspondencia con un patrón de nombre de archivo personalizado.
- Abra el editor de VBA
Presione Alt+F11 en Word para abrir el editor de Visual Basic para Aplicaciones. Si el editor se abre pero no se ve ningún proyecto, expanda Normal o Proyecto (MailMergeDocument) en el panel izquierdo. - Inserte un nuevo módulo
En el editor de VBA, haga clic en Insertar en la barra de menú y seleccione Módulo. Aparece una ventana de código en blanco. - Escriba el código de la macro
Copie y pegue el siguiente código en la ventana del módulo. Reemplace los valores de marcador de posición con su propia ruta de carpeta y nombres de campo.Sub SaveMergeWithCustomFilename() Dim MainDoc As Document Dim i As Integer Dim FolderPath As String Dim FileName As String Dim FieldValue1 As String Dim FieldValue2 As String ' Set the destination folder — change this path FolderPath = "C:\MailMergeOutput\" ' Ensure folder path ends with backslash If Right(FolderPath, 1) <> "\" Then FolderPath = FolderPath & "\" End If Set MainDoc = ActiveDocument With MainDoc.MailMerge .Destination = wdSendToNewDocument .SuppressBlankLines = True For i = 1 To .DataSource.RecordCount .DataSource.FirstRecord = i .DataSource.LastRecord = i ' Execute merge for the single record .Execute Pause:=False ' Get field values for filename FieldValue1 = .DataSource.DataFields("CustomerID").Value FieldValue2 = .DataSource.DataFields("LastName").Value ' Build filename — adjust pattern as needed FileName = "Invoice_" & FieldValue1 & "_" & FieldValue2 & ".docx" ' Save the resulting document ActiveDocument.SaveAs2 FileName:=FolderPath & FileName ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges Next i End With Set MainDoc = Nothing MsgBox "Merge complete. Files saved to " & FolderPath End Sub - Ajuste los nombres de campo y el patrón de nombre de archivo
En el código, cambie CustomerID y LastName para que coincidan con los nombres de campo reales de su origen de datos. Modifique la línea FileName para que coincida con el patrón deseado. Por ejemplo,"Letter_" & FieldValue1 & "_" & FieldValue2 & ".docx"produce nombres de archivo como Letter_102_Smith.docx. - Ejecute la macro
Cierre el editor de VBA y vuelva a Word. Presione Alt+F8 para abrir el cuadro de diálogo Macros. Seleccione SaveMergeWithCustomFilename en la lista y haga clic en Ejecutar. Word procesa cada registro y guarda archivos individuales en la carpeta especificada. - Verifique los archivos de salida
Abra la carpeta de destino. Confirme que cada archivo existe y que los nombres de archivo coinciden con su patrón. Abra algunos archivos para verificar que el contenido corresponde al registro correcto.
Problemas comunes y cómo solucionarlos
Error “Subíndice fuera del intervalo” al ejecutar la macro
Este error ocurre cuando el nombre de campo de la macro no coincide con un campo de su origen de datos. Abra su origen de datos y anote los encabezados de columna exactos. Actualice los nombres de campo de la macro para que coincidan con esos encabezados. Si su origen de datos utiliza encabezados con espacios, encierre el nombre entre corchetes, por ejemplo .DataFields("[First Name]").Value.
Los archivos se guardan pero el contenido está en blanco o incompleto
Es posible que la macro esté ejecutando la combinación antes de que el documento principal esté completamente conectado al origen de datos. Asegúrese de haber ejecutado una combinación de prueba en un nuevo documento al menos una vez antes de ejecutar la macro. También confirme que el documento principal de combinación de correspondencia sea el documento activo cuando ejecute la macro.
La macro no aparece en el cuadro de diálogo Macros
La macro no aparecerá si colocó el código en un módulo de documento en lugar de un módulo estándar. En el editor de VBA, haga clic con el botón derecho en el módulo que contiene su código y verifique que esté listado en Normal o en el proyecto de su documento. Si está en el proyecto del documento, la macro solo estará disponible cuando ese documento esté abierto.
Los nombres de archivo contienen caracteres no válidos como dos puntos o barras
Windows no permite ciertos caracteres en los nombres de archivo. Si su origen de datos contiene valores con caracteres como : / \ ? " < > |, el método SaveAs2 fallará. Agregue una línea en la macro para reemplazar esos caracteres antes de construir el nombre de archivo. Por ejemplo: FieldValue1 = Replace(FieldValue1, ":", "").
Comparación de métodos de salida de combinación de correspondencia
| Elemento | Combinación predeterminada en nuevo documento | Macro con patrón de nombre de archivo personalizado |
|---|---|---|
| Formato de salida | Documento único con todos los registros | Un archivo por registro |
| Control del nombre de archivo | Sin control: el usuario guarda manualmente | Control total mediante valores de campo |
| Tiempo de configuración | Ninguno | 15–30 minutos para la creación de la macro |
| Repetibilidad | Guardado manual cada vez | Ejecutar macro para cualquier origen de datos |
| Manejo de errores | El usuario corrige los problemas manualmente | Requiere depuración de VBA |
Ahora puede guardar cada registro de combinación de correspondencia como un archivo separado con un patrón de nombre de archivo personalizado utilizando la macro proporcionada. Pruebe la macro primero con un conjunto de datos pequeño para confirmar que el patrón de nombre de archivo funciona correctamente. Para un uso avanzado, modifique la macro para incluir marcas de fecha, números secuenciales o lógica condicional basada en valores de campo. La clave para una salida confiable es hacer coincidir exactamente los nombres de campo y asegurarse de que la carpeta de destino exista antes de ejecutar la macro.