Cómo configurar la salida de combinación de correspondencia de Word para guardar con un patrón de nombre de archivo personalizado
🔍 WiseChecker

Cómo configurar la salida de combinación de correspondencia de Word para guardar con un patrón de nombre de archivo personalizado

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.

ADVERTISEMENT

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.

ADVERTISEMENT

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.

  1. 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.
  2. 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.
  3. 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
    
  4. 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.
  5. 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.
  6. 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, ":", "").

ADVERTISEMENT

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.

ADVERTISEMENT