Duda de cómo ejecutar o simular una macros de excel

  • Autor Autor colombiano3454
  • Fecha de inicio Fecha de inicio
colombiano3454

colombiano3454

Zeta
Verificado
Verificación en dos pasos activada
Verificado por Binance
Actualmente, cuento con una automatización desarrollada en Excel mediante VBA, cuya programación se encuentra completamente terminada y preparada para funcionar. No obstante, su procesamiento requiere alrededor de 15 minutos, puesto que involucra numerosas operaciones indispensables para obtener los resultados esperados. Frente a esta situación, he considerado distintas opciones para optimizar su rendimiento:

1. Correr la macros de excel mediante una suerte de máquina virtual que se ejecute y me llegue el resultado al correo
2. Corre el código pero en lenguaje python (la desventaje es que no actualiza tablas dinámicas) y cuando termine de correr el código python me llegue al correo el excel con el resultado.

El problema es que lo ideal sería el primer caso, pero es muy caro una máquina virtual para que se ejecute macros, conocen alguna solución para mi caso? O quizás comentarios que me puedan ayudar? O sugerencias?
 
¿Te sirvió? Únete a la conversación

Con tu cuenta gratis puedes responder, escribirle al autor por mensaje privado y comprar con Saldo retenido: el pago se libera cuando recibes lo acordado.

Toma 30 segundos · vuelves a este tema al terminar
Antes de alquilar una VM, intentaría medir qué parte de la macro consume esos 15 minutos: lectura/escritura celda a celda, recálculo, consultas externas o actualización de tablas dinámicas. Si hay muchos accesos a celdas, leer y escribir rangos completos mediante arrays suele ayudar. También puedes desactivar temporalmente actualización de pantalla, eventos y cálculo automático durante el proceso, restaurando los valores originales incluso si ocurre un error. Prueba siempre sobre una copia y comprueba que los resultados coincidan.

Si necesitas mantener VBA y Excel, otra opción es programar la ejecución en un equipo Windows que ya tengas encendido, con una tarea programada y un envío posterior del archivo. Requiere Excel instalado y probar la ejecución en la sesión que vaya a usar la tarea; la automatización desatendida de Office puede presentar bloqueos o ventanas emergentes, así que no la tomaría como solución de servidor sin pruebas.

Si decides migrar a Python, separaría primero el cálculo del refresco: Python puede procesar datos, pero no asumiría que una librería de archivos vaya a recalcular el libro ni refrescar las tablas dinámicas como Excel. ¿Con qué frecuencia necesitas ejecutarlo y el cuello de botella es el VBA o el refresco de datos?
 
es muy caro una máquina virtual para que se ejecute macros
colombiano3454, si ya tienes la macro terminada y el resultado es correcto, yo intentaría conservar ese trabajo. Que tarde 15 minutos no implica que necesites un servidor potente ni que tengas que reescribirla entera en Python. Si la ejecutaras una vez al día serían unas 7,5 horas de proceso al mes; la frecuencia cambia bastante la cuenta.

otra opción es programar la ejecución en un equipo Windows
Lo del equipo Windows que comenta tuttifrutazo tiene sentido para una primera etapa. Aprovecharía un equipo que ya tengas disponible, con Excel y su licencia, y prepararía una ejecución que trabaje sobre una copia del libro. El resultado tendría que guardarse con fecha y enviarse al terminar. También pondría un registro y un aviso de fallo: que una mañana no llegue el correo debe poder distinguirse de que el proceso siga trabajando.

Con tus tablas dinámicas hay una trampa que conviene conocer antes de pagar otra herramienta: pasar a Office Scripts con Power Automate tampoco garantiza resolver el refresco. Microsoft documenta que varios métodos de actualización de tablas dinámicas no hacen nada cuando se llaman desde un flujo, aunque terminen sin error. Está en esta documentación. Para tu caso probaría esa parte primero, antes de migrar el resto.

Incluso manteniendo Excel, no mandaría el correo simplemente después de llamar a RefreshAll. Algunas consultas se ejecutan en segundo plano y puedes acabar enviando un archivo con datos anteriores. Haría que el proceso compruebe que las consultas y cálculos terminaron, valide una fecha de actualización y un par de totales de control, y solo entonces guarde y envíe. Microsoft explica el comportamiento de RefreshAll aquí.

Si después necesitas llevarlo a una máquina remota, presupuestaría Windows, Excel, almacenamiento y la forma de ejecución, además del VPS. Para una ejecución sin nadie delante hay que revisar el licenciamiento correspondiente y controlar las ventanas o bloqueos que pueda presentar Office; no basta con dejar una tarea como SYSTEM. La guía de Microsoft para automatización desatendida recoge esos puntos.

Yo empezaría validando ese recorrido completo en el equipo disponible: entrada, macro, refresco, comprobación y correo. Así sabrás qué recursos consume realmente y cuánto te cuesta operarlo, antes de contratar una máquina o pagar por rehacer algo que ya funciona.
 
Atrás
Arriba