es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , , ,

Answer

  1. Avatar for 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:

    import xlwings as xw
    
    # Abrir libro de trabajo
    wb = xw.Book('Automatizar.xlsm')
    
    # Pegar valores a la hoja 1
    
    # Leer valores de la hoja 2
    valores_hoja2 = ...
    
    # Aplicar fórmula en la hoja 2
    
    # Actualizar todas las consultas
    for consulta in wb.queries:
        consulta.refresh()
    
    # Guardar cambios
    wb.save()
    
    # Llamar a la macro para subir los valores a SQL
    app = xw.apps.active
    nombre_macro = 'SubirValoresASQL'
    app.macro(nombre_macro)()
    
    # Cerrar libro de trabajo y salir de Excel
    wb.close()
    app.quit()
    

    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 variable nombre_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.

Comments are closed.