2015-09-10 10 views
1

У меня есть следующий код для запуска макроса, и она работает совершенно замечательно, когда я запускаю его изнутри питонаЗапуск макросов из питона на сервере

try: 
     xl = win32com.client.Dispatch("Excel.Application") 
     xlsPath = os.path.expanduser("C:/Users/hidden/Desktop/scripts/someFile.xlsm") 
     wb = xl.Workbooks.Open(Filename=xlsPath) 
     xl.Application.Run("GetData") 
     xl.DisplayAlerts = 0 
     wb.Save() 
     xl.Quit() 
     del xl 

    except Exception: 
     xl.Quit() 

Теперь, сценарий гораздо больше, чем это, и я нужно, чтобы он выполнялся как запланированное задание (или похожее) один раз в день на сервере. Я создал запланированную задачу, которая работает независимо от того, вошел ли пользователь в систему или нет, и работает так же, как ожидалось, но в тот момент, когда он выполняет макрос, он просто генерирует исключение, и ничего не происходит, как если бы он не выполнялся запустите макрос вообще. Я могу подтвердить, что он не выполняет до открытия Рабочего журнала

задача, которую я запланировал это .bat файл, который содержит следующее, и, как ожидаются, все пути, необходимых в сценарии абсолютные пути

@echo off 
python C:\Users\hidden\Desktop\scripts\automateMacros.py %* 

Также , когда я дважды щелкните файл битой, он работает, как ожидалось, но не будет работать, как запланированное задание, но я могу подтвердить, что получить запускаемый

EDIT: ошибка Исключение:

(-2147352567, 'Exception occurred.', (0, u'Microsoft Excel', u"Microsoft Excel cannot access the file 'C://Users/hidden/Desktop/scripts/someFile.xlsm'. There are several possible reasons:\n\n\u2022 The file name or path does not exist.\n\u2022 The file is being used by another program.\n\u2022 The workbook you are trying to save has the same name as a currently open workbook.", u'xlmain11.chm', 0, -2146827284), None)

Я только открываю файл после утверждения if, что он существует, это первая доступная книга. Обратите также внимание, если я сразу же запускаю пакетный скрипт, он работает как ожидалось

+0

Попробуйте дать полный путь питона в пакетном файле. например: 'C: \ Python27 \ Python.exe C: \ Users \ hidden \ Desktop \ scripts \ automateMacros.py% *' –

+0

Привет, pss, я все же записывал ошибку в файл журнала; ( – Slavi

+0

Не могли бы вы упомянуть об ошибке? –

ответ

0

Apprently речь идет окно, связанное, вот решение

link

0

Этот link поможет вам. В нем описывается, как запускать vbs и excel макросы из планировщика задач Windows. В дополнение к этому, попробуйте vbs вместо python, чтобы найти, является ли это проблемой python ИЛИ попробуйте другого пользователя выполнить запланированную задачу или попытайтесь указать другое имя файла во время сохранения, а затем переименуйте его по своему желанию.