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 

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

Funcion para copiar tabla de Excel en Word


Ejecuta la macro
  • Abre tu plantilla, presiona Alt + F8, selecciona  InsertExcelTable() y haz clic en Ejecutar.

Les comparto un video para que vean la ejecución de la macro


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

  1. Macro de Word utilizando Chatgpt
  2. Macro en Word para contar palabras
  3. Ejemplo Macro en WOrd
  4. Cómo Comparar Versiones de Documentos en Word con una Macro: Guía paso a paso
  5. Macro en Word para generar contratos automáticamente: Paso a paso


Comentarios

Entradas más populares de este blog

Macro de Excel para abrir archivo csv

API de banxico para obtener tipo de cambio utilizando Javascript

Ejemplo Macro en Word