Cómo hacer una Macro en Word para leer datos de Excel
Introducción
En este tutorial aprenderás a crear una macro en Word que lee datos de un archivo de Excel y los inserta en un documento de manera automática. Hay veces que por ejemplo lo necesitamos para generar reportes, cartas personalizadas y otros documentos donde la información proviene de una hoja de cálculo.
Con VBA (Visual Basic for Applications), podemos establecer una conexión entre Word y Excel, extrayendo los datos necesarios y colocándolos en el documento de forma dinámica.
Preparación de los datos en Excel
Antes de escribir la macro, necesitamos tener un archivo de Excel estructurado correctamente. Supongamos que tenemos una hoja de cálculo con los siguientes datos:
Guarda este archivo en una ubicación fácil de acceder.
¿Cómo implementar esta macro?
Inserta la macro:
- Presiona
Alt + F11
para abrir el Editor de VBA. - Vamos agregar una función para hacerlo con una Macro
- Copia el código
Alt + F11
para abrir el Editor de VBA.Sub InsertExcelTable1()
' Declarar variables
Dim wdDoc As Document
Dim wdRange As Range
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Dim TableRange As Object
Dim FilePath As String
Dim wdSelection As Range
' Manejo de errores
On Error GoTo ErrorHandler
' Obtener documento activo
Set wdDoc = Application.ActiveDocument
Set wdRange = wdDoc.Range(0, 0)
' Agregar Título
With wdRange
.InsertAfter "Reporte de Gastos por Departamento" & vbCrLf
.Bold = True
.Font.Size = 14
End With
' Agregar Texto descriptivo
Set wdRange = wdDoc.Range(wdDoc.Content.End - 1, wdDoc.Content.End - 1)
wdRange.InsertAfter vbCrLf & "La siguiente tabla contiene información de gastos por cada departamento:" & vbCrLf & vbCrLf
wdRange.Collapse wdCollapseEnd
' Pedir al usuario que seleccione el archivo de Excel
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Selecciona el archivo de Excel"
.Filters.Clear
.Filters.Add "Archivos de Excel", "*.xlsx;*.xlsm;*.xls"
If .Show = -1 Then
FilePath = .SelectedItems(1)
Else
MsgBox "No se seleccionó ningún archivo.", vbExclamation
Exit Sub
End If
End With
' Abrir Excel y el archivo seleccionado
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False ' Mantener oculto Excel
Set xlBook = xlApp.Workbooks.Open(FilePath)
Set xlSheet = xlBook.Sheets(1)
' Seleccionar el rango de datos en la hoja de Excel
Set TableRange = xlSheet.Range("A1:D20") ' Cambia el rango según tus necesidades
' Copiar el rango de Excel
TableRange.Copy
' Mover el cursor al final y pegar la tabla
Set wdRange = wdDoc.Range(wdDoc.Content.End - 1, wdDoc.Content.End - 1)
wdRange.PasteExcelTable LinkedToExcel:=True, WordFormatting:=False, RTF:=False
' Cerrar Excel sin guardar cambios
xlBook.Close SaveChanges:=False
xlApp.Quit
' Liberar variables
Set wdDoc = Nothing
Set wdRange = Nothing
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing
Set TableRange = Nothing
Exit Sub
ErrorHandler:
MsgBox "Ocurrió un error: " & Err.Description, vbCritical
If Not xlApp Is Nothing Then xlApp.Quit
Set xlApp = Nothing
End Sub
Para conocer mas de las funciones disponibles para macros
https://learn.microsoft.com/en-us/office/vba/api/word.range.pasteexceltable
- Abre tu plantilla, presiona
Alt + F8
, selecciona InsertExcelTable() y haz clic enEjecutar
.
Mejoras Posibles
Filtrar o modificar los datos antes de insertarlos en Word.
Poner condiciones para leer los datos del archivo de Excel.
Conclusión
Automatizar la lectura de datos de Excel en Word con macros VBA ahorra tiempo y evita errores manuales. Esta técnica es útil para generar documentos con información dinámica sin necesidad de copiar y pegar manualmente.
Si te gustó este tutorial, deja un comentario y comparte tus ideas sobre cómo mejorar esta macro. ¡Espero que te haya sido útil.
Les comparto la liga de otras macros en este blog
Macros en Word
- Macro de Word utilizando Chatgpt
- Macro en Word para contar palabras
- Ejemplo Macro en WOrd
- Cómo Comparar Versiones de Documentos en Word con una Macro: Guía paso a paso
- Macro en Word para generar contratos automáticamente: Paso a paso
Comentarios
Publicar un comentario