
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



