¿Cómo llenar una plantilla de Word (.dotx) con datos de Excel usando VBA?

Para llenar una plantilla de Word (.dotx) con datos de Excel usando VBA, necesitarás crear un script que conecte ambos programas y realice la transferencia de datos. A continuación, te proporciono un ejemplo básico que puedes adaptar a tus necesidades:

Paso 1: Configuración inicial

  • Crear tu plantilla de Word (.dotx):
    • Diseña tu documento en Word y usa etiquetas marcadores de posición, como `<<Nombre>>`, `<<Direccion>>`, etc., donde deseas insertar los datos.
  • Preparar tu hoja de Excel:
    • Organiza tus datos en una tabla o lista clara, donde los encabezados sean las categorías de datos que deseas usar, como `Nombre`, `Direccion`, etc.
  • Habilitar el acceso a Word desde VBA en Excel:
    • Abre Excel y activa el Editor de Visual Basic (VBA) presionando `Alt + F11`.
    • Ve a `Herramientas` > `Referencias` y activa la referencia a «Microsoft Word xx.x Object Library».

Paso 2: Escribir el código VBA

Crea un nuevo módulo en el Editor de VBA y pega el siguiente código. Asegúrate de modificarlo para que coincida con tus nombres de archivo y estructura de datos.

Sub FillWordTemplate()
    Dim wdApp As Object
    Dim wdDoc As Object
    Dim ws As Worksheet
    Dim templatePath As String
    Dim savePath As String
    Dim i As Integer

    ' Define la ruta de la plantilla de Word y la ruta para guardar el documento final
    templatePath = "C:rutaatuplantilla.dotx"
    savePath = "C:rutaparaguardardocumento.docx"

    ' Inicializar una nueva instancia de Word
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True ' Configurar en False si no deseas mostrar Word

    ' Abrir la plantilla de Word
    Set wdDoc = wdApp.Documents.Add(templatePath)

    ' Obtener la hoja de trabajo activa
    Set ws = ThisWorkbook.Sheets("Hoja1") ' Asegúrate de que el nombre de la hoja esté correcto
    
    ' Asumiendo que deseas llenar la plantilla usando la primera fila de datos
    i = 2 ' Cambia el número según la fila de inicio de tus datos (excluyendo encabezados)
    
    With wdDoc.Content
        .Find.Execute FindText:="<<Nombre>>", ReplaceWith:=ws.Cells(i, 1).Value, Replace:=wdReplaceAll
        .Find.Execute FindText:="<<Direccion>>", ReplaceWith:=ws.Cells(i, 2).Value, Replace:=wdReplaceAll
        ' Añade más líneas de Find.Execute para cada campo a reemplazar
    End With

    ' Guardar el documento nuevo
    wdDoc.SaveAs2 savePath

    ' Cerrar el documento y la instancia de Word
    wdDoc.Close
    wdApp.Quit

    ' Liberar objetos
    Set wdDoc = Nothing
    Set wdApp = Nothing

    MsgBox "Template filled and saved successfully", vbInformation
End Sub

Paso 3: Adaptación y pruebas

  • Ajusta las rutas de acceso a los archivos `templatePath` y `savePath` para que se correspondan con las ubicaciones correctas en tu sistema.
  • Cambia los índices de celda `ws.Cells(i, …)` para que coincidan con la columna que contiene el dato a insertar.
  • Si tienes más campos, duplica y ajusta las líneas `Find.Execute`.

Paso 4: Ejecutar el código

  • Vuelve a Excel.
  • Ejecuta el macro presionando `Alt + F8`, selecciona `FillWordTemplate` y haz clic en `Ejecutar`.

Este enfoque básico debería ayudarte a comenzar con la automatización entre Excel y Word usando VBA. Ajusta y amplía el script según sea necesario para adaptarlo a tus necesidades específicas.

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