La macro de VBA en Excel se ejecuta en el escritorio pero no en Excel online: solución
🔍 WiseChecker

La macro de VBA en Excel se ejecuta en el escritorio pero no en Excel online: solución

Tienes una macro de VBA que funciona perfectamente en la versión de escritorio de Excel, pero falla o no hace nada cuando abres el mismo libro en Excel Online. Esto ocurre porque Excel Online se ejecuta en un navegador y no admite el motor completo de VBA que proporciona Excel de escritorio. Este artículo explica por qué las macros de VBA están bloqueadas en Excel Online y te ofrece la única solución fiable: convertir tu macro a Office Scripts o eliminar la macro por completo.

Conclusiones clave: Por qué fallan las macros de VBA en Excel Online y cómo solucionarlo

  • El motor de VBA no está presente en Excel Online: Excel Online utiliza un motor de JavaScript basado en navegador que no puede ejecutar código VBA
  • Convierte VBA a Office Scripts: La única forma de automatizar tareas en Excel Online es reescribir tu macro usando Office Scripts (TypeScript)
  • Usa Power Automate como alternativa: Activa Office Scripts o macros de Excel de escritorio desde flujos en la nube cuando se requiera acceso en línea

ADVERTISEMENT

Por qué Excel Online no puede ejecutar macros de VBA

Excel Online es una aplicación web construida con JavaScript y HTML5. No incluye el runtime de Visual Basic para Aplicaciones que instala Excel de escritorio. Cuando abres un libro que contiene código VBA en Excel Online, el navegador muestra un banner de advertencia: “Este libro contiene macros. Las macros no son compatibles con Excel para la web”. El proyecto VBA se conserva en el archivo, pero no puede ejecutarse.

Microsoft diseñó Excel Online para colaboración, coautoría en tiempo real y edición ligera. Las macros de VBA requieren acceso completo al sistema operativo Windows, al sistema de archivos y a bibliotecas externas. Un navegador no puede proporcionar ese nivel de acceso por razones de seguridad. Incluso si guardas el libro en OneDrive o SharePoint, Excel Online no ejecutará el código VBA.

Qué sucede cuando intentas ejecutar una macro en Excel Online

No aparece ningún mensaje de error porque los botones de macro y los atajos de teclado asignados simplemente no hacen nada. La pestaña Programador no está disponible en Excel Online. No puedes abrir el Editor de Visual Basic, ver el proyecto VBA ni depurar el código. El código de la macro permanece en el archivo, pero es invisible e inactivo.

Pasos para solucionar el problema de que la macro de VBA no funcione en Excel Online

Tienes tres opciones. La mejor solución a largo plazo es convertir tu macro de VBA a un Office Script. Los Office Scripts se ejecutan en Excel Online y son el reemplazo oficial de VBA en el navegador.

  1. Abre el libro en Excel Online y verifica el banner de advertencia
    Ve al sitio de OneDrive o SharePoint donde está almacenado el archivo. Haz clic en el archivo para abrirlo en Excel Online. Observa la parte superior de la hoja de cálculo. Si ves un banner amarillo o gris que dice “Las macros no son compatibles con Excel para la web”, la macro está presente pero no puede ejecutarse. Haz clic en “Editar en la aplicación de escritorio” si necesitas ejecutar la macro de inmediato.
  2. Graba un nuevo Office Script en Excel Online
    Abre el libro en Excel Online. Ve a la pestaña Automatizar. Haz clic en “Nuevo script”. El Editor de código se abre en el lado derecho de la pantalla. Haz clic en “Grabar” para comenzar a capturar tus acciones. Realiza los pasos que haría tu macro de VBA. Haz clic en “Detener grabación”. El script se guarda como un archivo TypeScript dentro del libro. Nombra el script y pruébalo haciendo clic en “Ejecutar”.
  3. Traduce manualmente el código VBA a Office Scripts
    Si tu macro de VBA es compleja, debes reescribirla manualmente. Abre el código VBA en Excel de escritorio. Identifica cada operación: seleccionar rangos, copiar datos, aplicar fórmulas, ordenar tablas o crear gráficos. Escribe el código TypeScript equivalente en el Editor de código de Office Scripts. Por ejemplo, el Range("A1").Value = 5 de VBA se convierte en workbook.getWorksheet("Sheet1").getRange("A1").setValue(5). Usa la documentación de referencia de la API de Office Scripts de Microsoft para hacer coincidir cada método.
  4. Asigna el script a un botón en Excel Online
    Después de crear y probar el script, puedes agregar un botón a la hoja de cálculo. Haz clic en la pestaña Automatizar. Haz clic en “Todos los scripts”. Encuentra tu script. Haz clic en el menú de tres puntos junto al nombre del script y selecciona “Agregar a la hoja de cálculo”. Aparece un botón en la hoja. Cualquier usuario con permisos de edición puede hacer clic en el botón para ejecutar el script en Excel Online.
  5. Usa Power Automate para activar el script desde un flujo en la nube
    Si necesitas ejecutar el script automáticamente, crea un flujo en Power Automate. Ve a make.powerautomate.com. Crea un nuevo flujo programado o un flujo instantáneo. Agrega la acción “Ejecutar script” del conector de Excel Online (Business). Selecciona el libro y el script. El flujo puede ejecutarse en un temporizador, cuando se modifica un archivo o cuando se envía un formulario. Esto reemplaza los Application.OnTime o los desencadenadores de eventos de hoja de cálculo de VBA.

ADVERTISEMENT

Si debes mantener la macro de VBA para usuarios de escritorio

Puedes mantener la macro de VBA en el archivo para usuarios de escritorio mientras proporcionas un Office Script para usuarios en línea. El libro almacenará tanto el proyecto VBA como el archivo de script por separado. Los usuarios de escritorio ven la pestaña Programador y pueden ejecutar la macro. Los usuarios en línea ven la pestaña Automatizar y pueden ejecutar el script. No se produce ningún conflicto porque Excel Online ignora por completo el proyecto VBA.

Problemas comunes después de convertir a Office Scripts

Office Scripts no están disponibles en mi inquilino

Office Scripts requieren una suscripción a Microsoft 365 que incluya la versión de escritorio de Excel. Business Standard, Business Premium, Enterprise E3 y Enterprise E5 incluyen Office Scripts. Si tienes un plan Microsoft 365 Basic o Family, Office Scripts no están disponibles. En ese caso, no puedes automatizar tareas en Excel Online. Debes editar el libro en la aplicación de escritorio.

Mi macro de VBA usa llamadas a la API de Windows o bibliotecas externas

Office Scripts no pueden llamar a funciones de la API de Windows, controles ActiveX ni objetos COM. Si tu macro interactúa con el sistema de archivos, envía correos electrónicos a través de Outlook o controla otras aplicaciones, esa funcionalidad se pierde en Excel Online. Debes reemplazar ese comportamiento con acciones de Power Automate o ejecutar la macro solo en Excel de escritorio.

El Office Script no funciona en todas las hojas de cálculo

Office Scripts deben hacer referencia a nombres de hoja específicos. Si tu libro tiene varias hojas y el usuario cambia el nombre de una hoja, el script falla. Usa el método getWorksheet() con el nombre de la hoja como cadena. Para acceso dinámico, recorre todas las hojas de cálculo usando workbook.getWorksheets() y verifica la propiedad getName().

ADVERTISEMENT

Macro de VBA vs Office Script: diferencias clave

Elemento Macro de VBA (Escritorio) Office Script (Excel Online)
Lenguaje Visual Basic para Aplicaciones TypeScript (superconjunto de JavaScript)
Ubicación del runtime Aplicación de escritorio de Windows Navegador (nube de Microsoft)
Acceso a archivos Sistema de archivos completo, DLL externas, objetos COM Solo el libro actual a través de la API
Interfaz de usuario UserForms, controles ActiveX, cuadros de mensaje Sin interfaz personalizada; usa botones o Power Automate
Métodos de activación Eventos de hoja de cálculo, Application.OnTime, botones Botones de script, flujos de Power Automate, ejecuciones programadas
Modelo de seguridad Archivo habilitado para macros (.xlsm) con firmas digitales Script almacenado dentro del archivo .xlsx; sin advertencia de macros

Ahora puedes identificar por qué tu macro de VBA falla en Excel Online y aplicar la solución correcta. La solución principal es convertir tu macro a un Office Script usando la pestaña Automatizar. Si Office Scripts no están disponibles en tu suscripción, edita el libro en la aplicación de escritorio siempre que necesites ejecutar la macro. Para automatización avanzada, combina Office Scripts con Power Automate para activar acciones desde eventos en la nube. Usa el método workbook.getWorksheet() en tu script para evitar errores cuando cambien los nombres de las hojas de cálculo.

ADVERTISEMENT