Невозможно запустить пакетный запуск 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, кроме этих двух документов:

Что я могу сделать, чтобы предоставить доступную по сценарию альтернативу вышеуказанному скрипту 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.

Другие вопросы по тегам