У меня есть несколько процессов Excel, которые выполняются в макросах. Я попытался автоматизировать работу и хочу использовать Python для:
- Открыть Excel
- Добавить любые надстройки com32
- Запустить макрос
- Когда макрос завершится, закройте экземпляр excel
У меня есть пример кода ниже - я считаю, что код иногда нестабилен. Он не всегда добавляет надстройку, и я не знаю, когда закрывать объект Excel, т. Е. Если макрос выполняется какое-то время, скрипт python не знает, ждать.
Есть ли лучшие способы для достижения этого? Я хотел бы перенести больше макросов в python, но есть много пользователей сценариев Excel, так что это долгосрочная цель.
import win32com.client
import os
import traceback
DIRECTORY = '*'
FILE = '*.xlsm'
MACRO = '*'
path = os.path.join(DIRECTORY, FILE)
if os.path.exists(path):
try:
xlApp = win32com.client.Dispatch('Excel.Application')
xlApp.DisplayAlerts = False
xlApp.Visible = True
xlApp.RegisterXLL('*.xll')
wb = xlApp.Workbooks.Open(Filename=path)
xlApp.Application.Run(MACRO)
wb.Save()
wb.Close()
xlApp.Application.Quit()
print('Code ran successfully.')
except:
print('An error was encountered; see traceback.')
print(traceback.format_exc())
xlApp.Quit()