📊 Automatiza tu trabajo: Convierte tablas de Word a Excel con una macro

Imagen
 Si trabajas en una oficina, seguro te enfrentas a tareas repetitivas que consumen mucho tiempo, como copiar datos de una tabla en Word a una hoja de Excel.   Afortunadamente, existe una forma de automatizar este proceso mediante macros en Word, lo que te permitirá ahorrar tiempo y esfuerzo, y enfocarte en tareas más importantes. ¿Qué es una macro? Una macro es una secuencia de instrucciones que te permite automatizar tareas repetitivas en aplicaciones como Word y Excel. Utilizando el lenguaje VBA (Visual Basic for Applications), puedes escribir códigos que realicen tareas como copiar tablas de un documento de Word y pegarlas en una hoja de Excel con solo hacer clic en un botón. ¿Por qué debería usar una macro para convertir tablas de Word a Excel? Ahorra tiempo : Si trabajas con grandes cantidades de datos, una macro puede copiar todo de una tabla a Excel de forma rápida y precisa. Minimiza errores : El proceso manual de copiar y pegar puede dar lugar a errores humanos, ...

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

🚀 Mantener este blog funcionando requiere tiempo y café. ¡Puedes contribuir con uno aquí!

Entradas más populares de este blog

Guía Práctica: Ejemplo Completo de ASPX para Desarrolladores Web

Macro de Excel para abrir archivo csv

API de banxico para obtener tipo de cambio utilizando Javascript