Excel

Power Query, VBA, Office Scripts o Python: ¿cuál es la mejor forma de automatizar Excel en 2027?

Portada "Power Query, VBA, Office Scripts o Python: ¿cuál automatiza mejor tu Excel?" con una tarjeta de lo mejor de cada herramienta: datos, escritorio, nube y flujos, y análisis.

"¿Cuál es la mejor forma de automatizar Excel?" es una pregunta que casi siempre recibe una respuesta incorrecta, porque está mal planteada. No hay una "mejor" herramienta: hay una herramienta adecuada para tu tarea, tu equipo, tu licencia y la persona que va a mantener la solución dentro de dos años. Para que la comparación sea concreta, resolví la misma tarea con cuatro herramientas: consolidar 12 libros mensuales de ventas (120.000 filas) en una sola tabla.

En este artículo te muestro el código de cada alternativa, los tiempos que medí, los requisitos reales de cada una (con sus límites) y una matriz de decisión para elegir. Una aclaración: el título habla de 2027, pero solo puedo afirmar lo que existe y verifiqué a 9 de octubre de 2026; las herramientas cambian, el método de decidir no.

Resumen. En mi prueba, Power Query (6,7 s; 3,7 s al actualizar), VBA (7,5 s) y Python con pandas (7,0 s) consolidaron 120.000 filas con exactamente el mismo resultado. La velocidad no decide: decide dónde corre, quién lo mantiene y qué más necesitas (formato, correos, flujos en la nube). Regla práctica: usa la herramienta más simple que resuelva el problema.

La tarea: consolidar 12 libros mensuales

Cada libro (ventas-2026-01.xlsx a ventas-2026-12.xlsx) tiene una hoja con cinco columnas (Fecha, Vendedor, Producto, Cantidad, Valor) y 10.000 filas. El objetivo es una tabla consolidada de 120.000 filas, con los tipos de dato correctos, que se pueda repetir cuando llegue un nuevo mes. Verifiqué el resultado con una suma de control: el total de Valor debe ser 11.111.254.600. Lo probé en Windows con Excel 16 y Python 3 con pandas 2.3.

Gráfico de barras con los tiempos de consolidar 12 libros de 120.000 filas: Power Query 6,7 segundos en la primera carga y 3,7 al actualizar, Python con pandas 7,0 y VBA 7,5.
Tiempos medidos al consolidar 12 libros (120.000 filas). Los tres métodos dieron el mismo resultado.

Opción 1: Power Query (sin escribir código en la hoja)

Power Query es el conector de datos de Excel: Datos > Obtener datos > Desde un archivo > Desde la carpeta. Se define una vez y se actualiza con un clic. Este es el código M (Editor avanzado) que usé:

let
    Origen = Folder.Files("C:\RUTA\datos"),
    Solo = Table.SelectRows(Origen, each [Extension] = ".xlsx" and not Text.StartsWith([Name], "~$")),
    Leer = Table.AddColumn(Solo, "Datos", each Excel.Workbook([Content], true){0}[Data]),
    Combinado = Table.Combine(Leer[Datos]),
    Tipos = Table.TransformColumnTypes(Combinado,
        {{"Fecha", type date}, {"Vendedor", type text}, {"Producto", type text},
         {"Cantidad", Int64.Type}, {"Valor", type number}})
in
    Tipos

Resultado: 120.000 filas, suma 11.111.254.600, 6,7 segundos la primera carga y 3,7 al actualizar. Ventajas: sin macros, auditable (cada paso queda registrado), se actualiza agregando el archivo del mes nuevo a la carpeta. Límites: no formatea ni envía correos; está pensado para importar, limpiar y combinar datos. Lo explico a fondo, con el caso de las fechas y los valores en pesos, en el artículo sobre cómo importar un CSV correctamente.

Opción 2: VBA (macros en el escritorio)

VBA es el lenguaje de macros de Excel. Sirve para consolidar, pero su fuerte es lo que viene después: dar formato, crear PDF por vendedor, enviar correos. Esta macro, que lee cada archivo en una matriz y la escribe de un golpe, es la versión eficiente:

Sub Consolidar(ByVal carpeta As String)
    Dim destino As Worksheet, archivo As String, wb As Workbook
    Dim datos As Variant, fila As Long, n As Long
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Set destino = ThisWorkbook.Worksheets("Consolidado")
    destino.Cells.Clear
    destino.Range("A1:E1").Value = Array("Fecha", "Vendedor", "Producto", "Cantidad", "Valor")
    fila = 2
    archivo = Dir(carpeta & "\ventas-2026-*.xlsx")
    Do While archivo <> ""
        Set wb = Workbooks.Open(carpeta & "\" & archivo, ReadOnly:=True, UpdateLinks:=0)
        With wb.Worksheets(1).UsedRange
            n = .Rows.Count - 1
            If n > 0 Then
                datos = .Offset(1, 0).Resize(n, 5).Value2   ' sin encabezado
                destino.Cells(fila, 1).Resize(n, 5).Value2 = datos
                fila = fila + n
            End If
        End With
        wb.Close SaveChanges:=False
        archivo = Dir()
    Loop
    destino.Range("A:A").NumberFormat = "dd/mm/yyyy"
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

Resultado: 120.000 filas, suma 11.111.254.600, 7,5 segundos. Ventajas: control total del proceso y de la presentación; hay mucho conocimiento en español. Límites: solo funciona en Excel de escritorio (no en Excel para la web), el archivo debe guardarse como .xlsm y Microsoft bloquea por defecto las macros de archivos descargados de internet, así que quien las reciba tiene que desbloquearlas; además, requiere disciplina de mantenimiento (comentarios, versiones). Para ver macros listas para usar, mira ¿Excel está muerto en la era de la IA? y las plantillas de la sección de Excel.

Opción 3: Office Scripts (Excel en la nube) y Power Automate

Office Scripts es el equivalente moderno de las macros, escrito en TypeScript, para Excel en la web (y versiones recientes de escritorio, según Microsoft). Un punto clave: un script trabaja sobre el libro en el que se ejecuta; para recorrer una carpeta de archivos se orquesta con Power Automate: un flujo lista los archivos, ejecuta el script de lectura en cada uno y luego un script de escritura en el libro consolidado. Este es el patrón (escrito a partir de la documentación; no lo ejecuté, porque requiere Excel en la web, OneDrive o SharePoint y Power Automate):

// Script 1 (se ejecuta en cada libro mensual): devuelve los datos sin el encabezado
function main(workbook: ExcelScript.Workbook): (string | number | boolean)[][] {
  const hoja = workbook.getWorksheets()[0];
  return hoja.getUsedRange().getValues().slice(1);
}

// Script 2 (se ejecuta en el libro consolidado): agrega un lote de filas
function main(workbook: ExcelScript.Workbook, filas: (string | number | boolean)[][]) {
  const hoja = workbook.getWorksheet("Consolidado");
  const siguiente = hoja.getUsedRange().getRowCount();
  hoja.getRangeByIndexes(siguiente, 0, filas.length, filas[0].length).setValues(filas);
}

Ventajas: corre en la nube sin que tu computador esté encendido, se programa y se integra con Teams, correo y SharePoint. Límites que Microsoft documenta: las solicitudes y respuestas en Excel para la web se limitan a 5 MB, hay 1.600 llamadas por día y por usuario a la acción "Ejecutar script" y un tiempo máximo de 120 segundos en operaciones síncronas de Power Automate; usar Office Scripts con Power Automate requiere una licencia empresarial de Microsoft 365. Para 120.000 filas hay que enviar lotes. Es una solución para equipos que ya trabajan en SharePoint y Power Automate, no para una pyme con un computador y archivos locales.

Opción 4: Python (dentro y fuera de Excel)

Hay dos cosas distintas. Python en Excel (la función =PY()) corre en la nube de Microsoft, en un entorno aislado sin acceso a tus archivos locales ni a la red: los datos entran solo con la función xl() y no puedes instalar paquetes propios, solo los de la distribución curada de Anaconda. Por eso no puede consolidar una carpeta: sirve para analizar y graficar los datos que ya están en el libro (por ejemplo, la tabla que dejó Power Query). Y Python fuera de Excel (en tu computador o en un servidor) sí lee archivos y es la opción para grandes volúmenes y tareas programadas:

import glob
import pandas as pd

archivos = sorted(glob.glob(r"C:\RUTA\datos\ventas-2026-*.xlsx"))
df = pd.concat((pd.read_excel(a) for a in archivos), ignore_index=True)

print(len(df), int(df["Valor"].sum()))                 # 120000 11111254600
print(df.groupby("Vendedor")["Valor"].sum().sort_values(ascending=False))
df.to_excel("consolidado.xlsx", index=False)

Resultado: 120.000 filas, suma 11.111.254.600, 7,0 segundos. Ventajas: potente para análisis, estadística y volúmenes mayores; el código es corto y reutilizable. Límites: hay que instalar Python y pandas y mantener el entorno, y no es lo que la mayoría de oficinas tiene a la mano.

Tabla con dónde corre cada herramienta y para qué sirve mejor: Power Query en Excel de escritorio, VBA en el escritorio, Office Scripts en Excel para la web con Power Automate, Python en Excel en la nube de Microsoft y Python fuera de Excel en tu equipo o un servidor.
Dónde corre cada herramienta y para qué sirve mejor.

Matriz de decisión: ¿cuál elijo?

Este es el recurso aplicable. Responde estas preguntas en orden y quédate con la primera herramienta que resuelva tu caso:

Si tu necesidad es…EligePor qué
Traer, limpiar y combinar datos de archivos, carpetas o bases, y repetirlo cada mesPower QuerySin código en la hoja, auditable, se actualiza con un clic.
Dar formato, generar PDF, enviar correos o ejecutar un proceso paso a paso en el escritorioVBAControl total del entorno de escritorio y mucha documentación.
Que el proceso corra en la nube, sin tu computador, integrado con SharePoint, Teams o correoOffice Scripts + Power AutomateOrquestación en la nube, con sus límites y licencia empresarial.
Analizar, modelar o graficar datos ya cargados en el libroPython en Excel (si tu plan lo incluye)Pandas y gráficos sin salir de Excel, pero sin acceso a archivos locales.
Volúmenes muy grandes, tareas programadas o procesamiento fuera de ExcelPython fuera de ExcelFlexible y escalable, con mantenimiento propio.
Reglas fijas y repetibles, pero sin saber programarUna plantilla ya hechaLa solución más rápida y barata si existe y encaja.

Y cuatro preguntas de desempate: 1) ¿Quién lo mantendrá dentro de dos años? (si solo tú sabes cómo funciona, es un riesgo). 2) ¿Dónde corre? (escritorio, web, servidor). 3) ¿Qué licencia tienes? (algunas funciones requieren planes empresariales). 4) ¿Qué pasa si falla? (¿es auditable y reversible?, lo trato en el artículo sobre el riesgo oculto de Excel).

Colombia, Latinoamérica y el mundo: dónde importa cada opción

En el mundo corporativo, la tendencia es combinar: Power Query para los datos, Python o BI para el análisis y flujos en la nube para la orquestación. En Colombia y buena parte de Latinoamérica, la realidad de muchas pymes, oficinas contables y colegios es otra: Excel de escritorio sobre Windows, archivos locales, a veces sin licencia empresarial. Por eso, en mi experiencia, Power Query y VBA resuelven la mayoría de los casos reales: están en el Excel que ya tienes y existe mucha documentación en español. Office Scripts y Python en Excel brillan cuando hay licencias empresariales y trabajo en la nube. Para un contador, Power Query para conciliar y VBA para generar documentos; para un docente, Power Query para unir listas de cursos y plantillas con macros para boletines; para un gerente, lo más importante es que el proceso no dependa de una sola persona.

Herramientas para automatizar sin empezar de cero

Si el proceso que necesitas ya existe como macro probada, ahórrate meses de desarrollo. Enviar correos masivos con adjuntos y copias CC y CCO y Combinar correspondencia y generar PDF individuales son aplicaciones en VBA listas para usar desde tus listas de Excel; y si quieres adaptar la lógica a tu caso, la asesoría PLUS te acompaña. Para empezar con IA y macros gratuitas, descarga el kit Excel con IA, y aprende más en mi lista de Excel en YouTube.

Sigue leyendo: cómo automatizar tareas en Excel y reducir errores y agentes de IA con acceso a tus sistemas.

Preguntas frecuentes

¿VBA está obsoleto?

No. Sigue funcionando y es muy útil en Excel de escritorio. Pero no corre en Excel para la web ni en la nube, y Microsoft bloquea por defecto las macros de archivos descargados de internet. Para tareas en la nube existen Office Scripts y Power Automate.

¿Power Query reemplaza a las macros?

Para importar, limpiar y combinar datos, casi siempre sí y con ventajas. Para dar formato, enviar correos o generar documentos, no: ahí siguen las macros.

¿Puede Python en Excel leer archivos de mi computador?

No. Corre en la nube de Microsoft en un entorno aislado sin acceso a archivos locales; los datos entran con xl(). Para leer archivos usa Power Query o Python fuera de Excel.

¿Necesito saber programar para automatizar Excel?

No siempre. Power Query se maneja con una interfaz gráfica, y existen plantillas listas. Programar ayuda cuando el proceso es único o complejo.

¿Cuál es más rápido?

En mi prueba con 120.000 filas, los tiempos fueron muy parecidos (entre 6,7 y 7,5 segundos; Power Query baja a 3,7 al actualizar). La velocidad rara vez es el criterio: importa más dónde corre y quién lo mantiene.

Elige con la matriz. Anota una tarea repetitiva de tu trabajo, responde las cuatro preguntas de desempate y escoge la herramienta más simple que la resuelva. Si ya existe como plantilla, empieza por ahí: correos masivos con adjuntos o PDF individuales.

Para pensar

Cada vez que automatizamos una tarea, la escondemos: el proceso deja de ser visible y pasa a depender de quien lo construyó. Si la mejor automatización es la que nadie nota, ¿cómo evitamos que se convierta en una caja negra que nadie entiende, y quién debería responder cuando falle: quien la programó, quien la usa o quien decidió no documentarla? ¿Y vale la pena aprender la herramienta de moda o la que seguirá funcionando cuando la moda cambie?

¿Te sirvió este artículo?

Reacciona y compártelo con alguien a quien le pueda servir.

Mantén presionado para elegir otra reacción

Sé el primero en reaccionar

¿Prefieres tenerlo listo?

Más guías en Excel y automatización de oficina

Usa ↑ ↓ para moverte, Enter para abrir y Esc para cerrar.