Невозможно запустить пакетный запуск Excel как запланированное задание
У меня есть следующий скрипт, который ранее запускался вручную:
set DIR="X:\SYSTEM\MAKROS"
X:
cd %DIR%
start /wait EXCEL.EXE /e-GENERATE_REPORTS BSYSTEM.XLA
При ручном запуске это работает просто отлично. BSYSTEM.XLA
является частью системы управления проектами на основе Excel, поэтому я не могу экспортировать файл в другой формат файла.
Теперь мне нужно запускать этот скрипт ежедневно. При создании запланированного задания для запуска .bat
-файл это только не работает. Задание заканчивается за несколько секунд (обычно выполнение сценария занимает около 10 минут) с кодом результата последнего запуска 0x1
и история задачи не показывает ничего полезного:
Я уже пытался создать задачу, которая запускается напрямую "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE" /e-GENERATE_REPORTS BSYSTEM.XLA
но это только ошибка с этим, показанным в истории:
Планировщику не удалось запустить действие "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE" в экземпляре "{1fbeadd0-605b-4fe0-8d96-621281c53519}" задачи "\Allgemein\TMG Bericht". Дополнительные данные: Значение ошибки: 2147942667.
Я также пробовал скрипт VBS, как это:
set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
set xlBook = xlApp.Workbooks.Open("X:\SYSTEM\MAKROS\BSYSTEM.XLA")
xlApp.Run "GENERATE_REPORTS"
xlBook.Close
xlApp.Quit
Но так я получаю ошибку The macro can not be executed. The 'GENERATE_REPORTS' macro may not be available in this workgroup, or all macros have been disabled
, что не соответствует действительности, так как он работает нормально с сценарием obove, вызываемым вручную. Сетевой диск, с которого создается файл, считается "надежным местом".
Как ни странно, когда я открываю BSYSTEM.XLA
Я не вижу никаких листов, просто файл Excel, в котором почти все элементы выделены серым цветом, кроме кнопки "Макро", и при попытке взглянуть на макросы я их не вижу. Вот почему я изо всех сил пытаюсь понять, что start /wait EXCEL.EXE /e-GENERATE_REPORTS BSYSTEM.XLA
даже делает..
Я не мог найти ничего полезного в переключателях командной строки Excel, кроме этих двух документов:
- https://support.office.com/en-us/article/command-line-switches-for-microsoft-office-products-079164cd-4ef5-4178-b235-441737deb3a6
- https://support.microsoft.com/de-de/help/291288/description-of-the-startup-switches-for-excel
Что я могу сделать, чтобы предоставить доступную по сценарию альтернативу вышеуказанному скрипту btach, чтобы я мог выполнить эту команду как запланированное задание, или что я могу сделать, чтобы исправить vbs?
2 ответа
Поскольку с помощью этой команды Excel должен отображать пользовательский интерфейс, задача не может быть запущена в фоновом режиме, что автоматически происходит, когда Run whether user is logged on or not
выбран в свойствах задачи. После установки этой опции все заработало как положено:
Для того чтобы Задача могла быть выполнена после перезапуска сервера, я включил автоматический вход в систему с помощью этого инструмента .
Сценарий VBA не работает, поскольку xlBook не является правильным объектом для поддержки метода Run.
Пытаться
xlApp.Run "GENERATE_REPORTS"
Альтернативы выше
Если ваш макрос находится в модуле
xlApp.Run "BSYSTEM.xls!GENERATE_REPORTS"
'обратите внимание на формат' workbookName '! macroЕсли ваш макрос находится в листе
'xlApp.Run "'BSYSTEM.xls'!sheet1.GENERATE_REPORT"
Расширения файлов
.xla - это файл формата надстройки Excel, вы можете попробовать сохранить его в формате.xlam, который является макросом с поддержкой xla.
Разбивка кода
set xlApp = CreateObject("Excel.Application")
' Создает процесс приложения Excel.
xlApp.Visible = True
'Позволяет просматривать / редактировать приложение.
set xlBook = xlApp.Workbooks.Open("X:\SYSTEM\MAKROS\BSYSTEM.XLA")
' Открывает указанную рабочую книгу в приложении Excel, которое было только что открыто.
xlApp.Run "GENERATE_REPORTS"
' Запускает макрокоманду GENERATE_REPORTS.
xlBook.Close
Закрывает рабочую книгу.
xlApp.Quit
'Завершает процесс подачи заявления в Excel.