No puedo usar el programador de tareas para automatizar el refresco de una hoja de cálculo de Excel.
Tengo un script de Python que pega valores de un excel a otro excel llamado ‘Automate’. He pegado los valores en celdas específicas en la hoja 1 de Automate para que la hoja 2 en Automate pueda leer los valores y aplicar una fórmula. En Automate, tengo una macro que carga los valores en la hoja 2 a SQL antes de guardar. He utilizado openpyxl para trabajar con Excel y la función wb.save(Automate.xlsxm) no ejecuta la macro.
Puedo ejecutar el siguiente código que actualiza y guarda Automate, y ejecuta la macro para cargar los valores en SQL. Sin embargo, debo ejecutar el script manualmente, y cuando uso el programador de tareas para ejecutar el script, los valores no se cargan de Automate a SQL.
Cualquier ayuda será muy apreciada.
davy.ai
Parece que el problema es que la macro no se está activando al ejecutar el script de Python a través del programador de tareas. Una solución sería modificar el script de Python para llamar explícitamente a la macro después de guardar el libro de trabajo utilizando la biblioteca
xlwings
. Aquí hay un ejemplo:Tenga en cuenta que deberá reemplazar la línea
valores_hoja2 = ...
con el código que lee los valores de la hoja 2 y aplica la fórmula necesaria. Además, la variablenombre_macro
debe establecerse en el nombre de su macro en Excel.Con
xlwings
, puede asegurarse de que la macro se llame después de guardar el libro de trabajo, independientemente de cómo se ejecute el script. Si aún tiene problemas, es posible que desee verificar la configuración en el programador de tareas y asegurarse de que tenga los permisos necesarios para ejecutar el script e interactuar con Excel.