VBA y Power BI pueden trabajar juntos aunque no sean la misma herramienta: Excel prepara y conserva los datos, VBA automatiza tareas dentro del libro y Power BI convierte esa información en informes visuales. En este tutorial usarás un libro de ventas mensuales para que termines con una tabla preparada, una macro de actualización y un informe de Power BI Desktop que puedes refrescar.
El flujo está pensado para Excel 2016 o posterior con Power Query integrado y Power BI Desktop. Las técnicas de VBA también están disponibles en versiones anteriores de Excel de escritorio, pero Power Query no viene integrado en Excel 2010 o 2013. Los datos y pasos se comprobaron en octubre de 2026.
Qué es VBA y cómo se relaciona con Power BI
VBA (Visual Basic for Applications) es el lenguaje con el que Excel automatiza acciones dentro de un libro. Puede abrir y guardar archivos, actualizar una consulta de Power Query, escribir fórmulas o modificar celdas. La función POTENCIA (POWER), por ejemplo, eleva un número a una potencia.
Power BI es la herramienta donde consultas los datos, organizas un modelo y construyes visualizaciones. Puede leer un libro de Excel, una carpeta o una base de datos, importar sus tablas y crear una medida de ventas.
El flujo del libro de este tutorial tiene tres capas:
- Excel conserva y revisa la tabla de ventas.
- Power Query prepara esa tabla y deja registradas las transformaciones.
- VBA actualiza el archivo antes de que Power BI Desktop lo importe.
En el ejemplo, Excel calculará cada importe con una fórmula. Power Query conservará las columnas limpias. La macro actualizará la información y Power BI mostrará el total por producto.
Dónde preparar el flujo entre Excel y Power BI
La preparación comienza dentro de Excel. En el libro Ventas.xlsx, crea una hoja llamada Ventas con la información mensual. Power Queryallows después elegir esa hoja como origen.
Para abrir las herramientas de importación en Excel 2016 o posterior:
En Power BI Desktop, el archivo Excel se elige desde Obtener datos. El flujo termina en el archivo real que contiene los datos, no en una copia temporal. Por eso, la macro actualizará ese archivo y guardará los cambios antes de la importación.
VBA interviene en la preparación y actualización. Puede:+ «`cinta Datos > Obtener y transformar datos > Actualizar todo
+ Guardar el libro antes de que Power BI Desktop lo abra.
+ Repetir operaciones de preparación sin realizarlas manualmente cada vez.
+ Comprobar que el archivo esté en la ruta esperada antes de actualizarlo.
La carpeta de trabajo de Power BI Desktop guarda el informe y sus pasos. Conviene mantener allí el informe `.pbix`, mientras que el libro `.xlsm` puede conservarse en la carpeta de datos que utiliza el informe.
### Qué aporta cada herramienta al flujo
| Herramienta | Prepara | Transforma | Calcula | Publica y visualiza |
|---|---|---|---|---|
| Excel | Entrada y revisión manual | Limitada mediante filtros y fórmulas | Fórmulas y tablas | No es su función principal |
| VBA | Acciones repetitivas en Excel | No transforma tablas como Power Query | Puede escribir o leer fórmulas | Prepara y actualiza archivos |
| Power Query | Selecciona y limpia orígenes | Columnas, tipos, filas y combinaciones | No es para cálculos celda a celda | Entrega una tabla preparada |
| Power BI | Conecta los orígenes | Usa las transformaciones guardadas | Medidas y columnas calculadas | Crea y publica informes |
Por ejemplo, Excel calcula `Unidades × Precio unitario`; Power Query puede convertir Fecha en tipo fecha y eliminar filas vacías; VBA actualiza la consulta; Power BI agrega el Importe por Producto.
### Qué versiones y componentes necesitas
[Power Query](https://support.microsoft.com/es-es/excel/about-power-query-in-excel) está integrado desde Excel 2016. En Excel 2010 y 2013 puede utilizarse como complemento. [VBA](https://learn.microsoft.com/es-es/office/vba/library-reference/concepts/getting-started-with-vba-in-office) se abre con `Alt+F11`; para insertar código, utiliza **Insertar > Módulo** dentro del editor.
Para completar la práctica necesitas Excel 2016 o posterior, un libro habilitado para macros y Power BI Desktop. En Mac, `Alt+F11` puede no coincidir con el atajo del sistema. Copilot depende de la licencia y del canal de actualización de Microsoft 365.
## Prepara una tabla de ventas para Power BI
Abre Excel y crea el libro **Ventas.xlsx**. Añade una hoja llamada **Ventas**. Escribe estos encabezados en A1:E1: Producto, Fecha, Unidades, Precio unitario e Importe. En A2:E5 pega los datos de abajo.
Después, selecciona **D2** y escribe la fórmula del importe. Su resultado es 150,00. Arrastra el controlador de relleno de D2 hasta D5 para calcular las demás filas.
```hoja
celda: D2
formula: =B2*C2
resalta: D2:D5
nota: D2: Arrastra el controlador de relleno hasta D5
pestaña: Ventas
| | A | B | C | D | E |
| 1 | **Producto** | **Fecha** | **Unidades** | **Precio unitario** | **Importe** |
| 2 | Teclado | 05/01/2026 | 3 | 50,00 | 150,00 |
| 3 | Mouse | 08/01/2026 | 5 | 25,00 | 125,00 |
| 4 | Monitor | 10/01/2026 | 2 | 180,00 | 360,00 |
| 5 | Cable USB | 12/01/2026 | 8 | 10,00 | 80,00 |
La tabla queda lista para importarse. No necesitas convertirla todavía en un objeto Tabla para que Power BI Desktop pueda leer el rango, pero sí conviene hacerlo para mantener una fuente estructurada y ampliable.
Comprueba que los datos no tengan filas ocultas
Ahora convierte el rango en una tabla y revisa que no falte información. Selecciona A1:E5 y abre:
En el cuadro Crear tabla, confirma que el encabezado está en A1 y que el intervalo es $A$1:$E$5. Pulsa Aceptar. Excel aplica el formato de tabla y añade los controles de filtro.
Comprueba ahora cada fila. Todas deben tener producto, fecha, unidades y precio. La tabla final queda así:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Producto | Fecha | Unidades | Precio unitario | Importe |
| 2 | Teclado | 05/01/2026 | 3 | 50,00 | 150,00 |
| 3 | Mouse | 08/01/2026 | 5 | 25,00 | 125,00 |
| 4 | Monitor | 10/01/2026 | 2 | 180,00 | 360,00 |
| 5 | Cable USB | 12/01/2026 | 8 | 10,00 | 80,00 |
Si una fila aparece oculta, no la elimines automáticamente. Quita el filtro o revisa la altura de fila antes de continuar.
Exporta los datos con Power Query desde Excel
En Excel 2016 o posterior, selecciona cualquier celda de la tabla y entra en:
Elige el origen Archivo de Excel y selecciona Ventas.xlsx. Cuando se abra el explorador de archivos, entra en la hoja Ventas. En el navegador de Power Query, comprueba que estén las cinco columnas y pulsa Cargar para enviarla al libro como tabla.
La hoja original conserva los datos. Power Query crea o actualiza una conexión y, si utilizas Cargar en, también puede insertar una hoja con los datos transformados. Para este flujo, carga la tabla en Ventas y conserva visible la fuente original.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Producto | Fecha | Unidades | Precio unitario | Importe |
| 2 | Teclado | 05/01/2026 | 3 | 50,00 | 150,00 |
| 3 | Mouse | 08/01/2026 | 5 | 25,00 | 125,00 |
| 4 | Monitor | 10/01/2026 | 2 | 180,00 | 360,00 |
| 5 | Cable USB | 12/01/2026 | 8 | 10,00 | 80,00 |
Limpia las columnas antes de cargar los datos
En Power Query, comprueba los tipos de cada columna antes de cargar. Usa Transformar > Tipo de datos o el menú de tipo situado junto al encabezado.
| Columna | Tipo que debe tener | Motivo |
|---|---|---|
| Producto | Texto | Permite agrupar por producto |
| Fecha | Fecha | Permite filtrar y crear jerarquías temporales |
| Unidades | Número entero | Cuenta las unidades vendidas |
| Precio unitario | Decimal | Conserva los decimales del precio |
| Importe | Número decimal | Permite sumar las ventas |
Elimina las filas vacías desde Inicio > Eliminar filas > Eliminar filas vacías. No elimines una fila solo porque Importe sea cero: puede representar una venta gratuita o una devolución válida.
=B2*C2 celda a celda; esa fórmula pertenece a Excel. Si la consulta usa fórmulas propias, están en lenguaje M, no en la sintaxis de las funciones de Excel.Usa VBA para actualizar el archivo de Power BI
La macro debe actualizar la consulta de Power Query y guardar el libro antes de que Power BI Desktop lo importe. Para crearla, abre el editor con Alt+F11. En el editor, elige Insertar > Módulo y pega el siguiente código.
La ruta debe apuntar al archivo que usa el informe de Power BI. Si Power BI Desktop ya tiene el libro abierto desde una ruta anterior, ajusta rutaExcel para que apunte al mismo archivo.
Option Explicit
Sub ActualizarParaPowerBI()
Dim rutaExcel As String
rutaExcel = "C:\Informes\Ventas.xlsx"
If Dir(rutaExcel) = "" Then
MsgBox "No se encuentra el archivo de Excel.", vbExclamation
Exit Sub
End If
Workbooks.Open FileName:=rutaExcel
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
ActiveWorkbook.Close SaveChanges:=False
MsgBox "El archivo de Excel está actualizado.", vbInformation
End Sub
Para ejecutarla, vuelve a Excel con Alt+F11, abre la lista con Alt+F8, selecciona ActualizarParaPowerBI y pulsa Ejecutar.
El archivo de Excel está actualizado.
Escribe la macro con nombres de función en inglés
Las propiedades Range.Formula, FormulaLocal, FormulaR1C1 y FormulaR1C1Local tienen reglas importantes. .Formula utiliza referencias A1 y exige nombres de función en inglés con coma como separador. .FormulaLocal utiliza el idioma y el separador del usuario.
Si una macro necesita calcular el Importe, esta asignación es válida:
Range("E2:E5").FormulaR1C1 = "=RC[-2]*RC[-1]"
Equivale a =C2*D2 en E2 y a =C3*D3 en E3. Al copiar la fórmula con referencias R1C1, Excel ajusta cada celda.
En cambio, esta línea produce un error 1004 en un Excel en español:
Range("E2:E5").FormulaR1C1 = "=SUMA(RC[-2]*RC[-1])"
La variante correcta con .Formula es:
Range("E2").Formula = "=C2*D2"
Si se necesita la función SUMA en español y el separador local, utiliza .FormulaLocal:
Range("F1").FormulaLocal = "=SUMA(E2:E5)"
.Formula y .FormulaR1C1 no cambian según el idioma: siempre esperan nombres de función en inglés y comas.Graba primero una actualización automática
Si todavía no conoces los comandos de VBA, utiliza la grabadora. En Excel, entra en Programador > Código > Grabar macro. Si la pestaña Programador está oculta, actívala mediante Archivo > Opciones > Personalizar cinta de opciones.
Asigna el nombre ActualizarVentas y elige una combinación Ctrl+letra. Después, selecciona la tabla y ejecuta:
Detén la grabación y abre el código con Alt+F11. La grabadora te mostrará los objetos, métodos y propiedades utilizados. Puedes conservarla como base y ajustar después la ruta del archivo.
Sub ActualizarVentas()
ThisWorkbook.RefreshAll
ThisWorkbook.Save
End Sub
.xlsm (Libro de Excel habilitado para macros). Un archivo .xlsx no conserva las macros al guardarlo.Publica el resultado y actualiza los datos
En Power BI Desktop, selecciona Obtener datos > Excel. Elige Ventas.xlsx, selecciona la hoja Ventas y marca la tabla. Al confirmar, Power BI crea una consulta y una tabla para importarla.
- Abre Obtener datos > Excel.
- Selecciona
C:\Informes\Ventas.xlsx. - Elige la hoja Ventas.
- Confirma la tabla y la carga en el modelo.
- Crea una tabla visual con Producto, Fecha e Importe.
La tabla debe mostrar las mismas cuatro ventas que Excel. El total de la columna Importe debe ser 715,00.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Producto | Fecha | Unidades | Precio unitario | Importe |
| 2 | Teclado | 05/01/2026 | 3 | 50,00 | 150,00 |
| 3 | Mouse | 08/01/2026 | 5 | 25,00 | 125,00 |
| 4 | Monitor | 10/01/2026 | 2 | 180,00 | 360,00 |
| 5 | Cable USB | 12/01/2026 | 8 | 10,00 | 80,00 |
Después de cada actualización de Excel, vuelve a Power BI Desktop y usa Actualizar en la consulta o en la vista de datos. Si el archivo cambió de ubicación, actualiza también la ruta del origen.
Revisa la actualización y conserva los pasos
| Comprobación | En Excel | En Power BI | Resultado esperado |
|---|---|---|---|
| Filas cargadas | A2:E5 | Tabla importada | 4 ventas |
| Total de importe | E2:E5 | Suma de Importe | 715,00 |
| Fecha | Columna B | Campo Fecha | 4 fechas recognized |
| Nombre de producto | Columna A | Campo Producto | 4 categorías |
| Preparación | Tipos de Power Query | Consulta | Las mismas columnas |
Los pasos de Power Query quedan guardados en el informe. En la próxima actualización se repiten: quitar filas vacías, asignar tipos y cargar la tabla. No debes repetir esas acciones manualmente.
Para comprobar una fila concreta, compara Importe en ambos programas. Por ejemplo, Monitor debe mostrar 360,00 en Excel y 360,00 en la tabla de Power BI.
.pbix; las transformaciones de Power Query pertenecen a la consulta. Guarda ambos archivos.Resuelve los errores de conexión y de fórmula
Una actualización puede fallar sin que los datos de Excel estén dañados. Separa el origen, la fórmula y la disponibilidad de las herramientas.
Error 1004 de VBA: aparece al escribir una fórmula en .Formula con un nombre en español. La propiedad espera funciones en inglés y comas. Usa =SUM(...) con .Formula o =SUMA(...) con .FormulaLocal.
Origen de datos no disponible: Power BI no encuentra el archivo, la carpeta cambió o el permiso fue retirado. Comprueba la ruta, el nombre, los permisos y que la aplicación esté disponible.
Columnas que cambian: una tablaReceived añade, elimina o cambia el nombre de una columna. Power Query conserva los pasos, pero una transformación puede dejar de encontrar la columna esperada. Revisa los encabezados del origen y ajusta el paso correspondiente.
Sub ComprobarOrigen()
Dim ruta As String
ruta = "C:\Informes\Ventas.xlsx"
If Dir(ruta) = "" Then
MsgBox "El origen no está disponible.", vbExclamation
Else
MsgBox "El origen está disponible.", vbInformation
End If
End Sub
Corrige el error 1004 al escribir una fórmula
Si aparece el mensaje «Se ha producido el error '1004' en tiempo de ejecución», mira la fórmula asignada a .Formula. Esta versión es válida:
Range("F1").Formula = "=SUM(E2:E5)"
En .Formula, SUM es el nombre en inglés y la coma separa los argumentos. Si necesitas escribir con las reglas del Excel en español, utiliza:
Range("F1").FormulaLocal = "=SUMA(E2:E5)"
No cambies la fórmula a =SUMA(...) mientras permanezca en .Formula.
Recupera una actualización que no encuentra el archivo
- Abre Power BI Desktop y entra en Obtener datos > Excel.
- Repite la selección del archivo Ventas.xlsx.
- Comprueba que la ruta escrita en
rutaExcelcoincide exactamente con la ubicación real. - Verifica que tienes permiso para leer el archivo.
- Cierra el libro en Excel si está bloqueado por otra aplicación y repite la actualización.
- Guarda el informe
.pbixdespués de corregir el origen.
Si la macro funciona pero el archivo no existe, el mensaje «No se encuentra el archivo de Excel.» aparece antes de que Power BI intente importar. Esa comprobación evita depender del availability of Power BI Desktop para detectar una ruta incorrecta.
Entiende los límites de Excel, VBA y Power BI
| Elemento | Lo que sí hace | Lo que no hace |
|---|---|---|
| Excel | Guarda, calcula, filtra y conecta Power Query | Excel para la web no ejecuta macros VBA |
| VBA | Automatiza acciones dentro del libro de escritorio | No sustituye el modelo semántico de Power BI |
| Power Query | Limpia y combina tablas con pasos guardados | No calcula fórmulas celda a celda |
| Power BI | Conecta, modela, visualiza y publica | No reemplaza la revisión de los datos en Excel |
| Copilot | Añade funciones de IA según licencia y canal | Sus novedades no están disponibles en todas las instalaciones |
Excel tiene 1.048.576 filas y 16.384 columnas en sus versiones de escritorio modernas. Esa capacidad no garantiza que una actualización con VBA sea rápida si recorre miles de celdas una por una. En archivos grandes, conviene reducir el rango, trabajar con matrices en memoria o desactivar temporalmente Application.ScreenUpdating.
Power BI Service y Power BI Desktop tienen funciones distintas. El archivo .pbix se prepara en Desktop y se publica en Service. Power Query transforma fuentes; Power BI crea medidas y visuales.
Lo que ya sabes hacer con VBA y Power BI
- Preparar una tabla de ventas con Producto, Fecha, Unidades, Precio unitario e Importe.
- Calcular los importes en Excel y convertir el rango en una Tabla.
- Limpiar columnas y tipos con Power Query.
- Actualizar y guardar el archivo con una macro VBA.
- Escribir fórmulas VBA con
.Formulaen inglés o.FormulaLocalen español. - Importar la tabla en Power BI Desktop y comprobar que el total coincida con Excel.
- Diagnosticar errores 1004, rutas incorrectas y cambios en columnas.
El siguiente paso es ampliar el libro con una tabla Productos que incluya Producto y Categoría. Después podrás medir las ventas por categoría en Power BI y comparar ese resultado con el resumen de Excel.
Fuentes
- MicrosoftOver 5 million subscribers are embracing Power BI for modern …consultado el 28/10/2026
- MicrosoftPOTENCIA — documentación oficialconsultado el 28/10/2026
- MicrosoftRange.Formula, FormulaLocal, FormulaR1C1 y FormulaR1C1Local — documentación oficialconsultado el 28/10/2026
- MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 28/10/2026
- MicrosoftPower Query (Obtener y transformar datos) — documentación oficialconsultado el 28/10/2026