2

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

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 ответа2

2

Сценарий VBA не выполняется, поскольку xlBook не является правильным объектом для поддержки метода Run.

Пытаться

xlApp.Run "GENERATE_REPORTS"

Альтернативы выше

  • Если ваш макрос находится в модуле xlApp.Run "BSYSTEM.xls!GENERATE_REPORTS" 'обратите внимание на формат' workbookName '!макрос

  • Если ваш макрос находится в листе '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.

0

Поскольку с помощью этой команды Excel должен отображать пользовательский интерфейс, задача не может быть запущена в фоновом режиме, что автоматически происходит в том случае, если в свойствах задачи выбран параметр « Run whether user is logged on or not в систему». После установки этой опции все заработало как положено:

Для того чтобы Задача могла быть выполнена после перезагрузки сервера, я включил автоматический вход в систему с помощью этого инструмента.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .