¿Cómo combinar correspondencia (Mail Merge) desde Excel con Word paso a paso en VBA?

Combinar correspondencia (Mail Merge) utilizando VBA es un proceso avanzado que puede automatizar la creación de documentos personalizados en Word utilizando datos de una hoja de Excel. A continuación, te proporciono un ejemplo paso a paso de cómo hacerlo:

Paso 1: Prepara tus datos en Excel

  • Crea un archivo de Excel con los datos que deseas utilizar para la combinación de correspondencia. Asegúrate de que la primera fila contenga los encabezados de las columnas. Por ejemplo, podrías tener columnas como `Nombre`, `Dirección`, `Ciudad`, etc.
  • Guarda el archivo de Excel en una ubicación conocida, por ejemplo, `C:DocumentosDatos.xlsx`.

Paso 2: Prepara tu documento de Word

   Estimado(a) <<Nombre>>,

   Su dirección registrada es <<Dirección>>, <<Ciudad>>.
  • Crea un documento de Word que servirá como plantilla para la combinación. Insertas campos de combinación donde desees mostrar datos. Por ejemplo:
  • Guarda el documento de Word en una ubicación conocida, por ejemplo, `C:DocumentosPlantilla.docx`.

Paso 3: Escribe el script VBA

Este script se encargará de abrir el documento de Word y realizar la combinación de correspondencia utilizando los datos de Excel.

Abre el Editor de VBA en Excel (Alt + F11) y sigue estos pasos:

   Sub CombinarCorrespondencia()
       Dim WordApp As Object
       Dim WordDoc As Object
       Dim RutaExcel As String
       Dim RutaWord As String
       
       ' Rutas de los archivos
       RutaExcel = "C:DocumentosDatos.xlsx"
       RutaWord = "C:DocumentosPlantilla.docx"
       
       ' Iniciar Word y abrir el documento
       Set WordApp = CreateObject("Word.Application")
       WordApp.Visible = True
       Set WordDoc = WordApp.Documents.Open(RutaWord)
       
       ' Configurar la combinación de correspondencia
       WordDoc.MailMerge.MainDocumentType = 0 ' Tipo: carta
       WordDoc.MailMerge.OpenDataSource _
           Name:=RutaExcel, _
           ReadOnly:=True, _
           AddToRecentFiles:=False, _
           Revert:=False, _
           Format:=0, _
           Connection:="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & RutaExcel & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";", _
           SQLStatement:="SELECT * FROM [Hoja1$]"
       
       ' Ejecutar la combinación de correspondencia
       WordDoc.MailMerge.Execute
       
       ' Cerrar documento y Word
       WordDoc.Close False
       WordApp.Quit
       
       ' Liberar variables
       Set WordDoc = Nothing
       Set WordApp = Nothing

       MsgBox "Combinación de correspondencia completada."
   End Sub
  • Inserta un nuevo módulo: Ve al menú `Insertar` > `Módulo`.
  • Escribe el código VBA siguiente en el módulo:

Paso 4: Ejecuta el script VBA

  • Ejecuta el script presionando `F5` o desde el menú `Ejecutar` > `Ejecutar Sub/UserForm`.
  • El script abrirá Word, conectará los datos de Excel y generará los documentos combinados.

Notas adicionales

  • Asegúrate de que las rutas de los archivos de Excel y Word en el script coincidan con las ubicaciones reales.
  • El ejemplo asume que los datos están en `Hoja1`. Ajusta el nombre de la hoja en el script si tus datos están en una hoja diferente.
  • Puede ser necesario ajustar configuraciones de seguridad para permitir la ejecución de Macros tanto en Excel como en Word.

Conoce nuestros servicios

Conoce nuestra tienda

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Deja un comentario