У меня есть файл .bat длиной в одну строку, который вызывает скрипт vb, который специально открывает файл Excel и запускает несколько макросов:

cscript priordays.vbs "C:\PATHANME\FILENAME.xlsm"

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

Когда я запускаю в планировщике задач, он говорит, что он работал успешно (код 0x0), но сценарий не выполняется. Он настроен на работу с самыми высокими разрешениями, независимо от того, вошел ли пользователь в систему, активировал ли он компьютер и т.д. Еще ничего.

Для тех, кто спрашивает, что в скрипте VB, это:

Dim arts, objExcel

Set args = WScript.ARguments
Set objExcel = CreateObject("Excel.Application")

objExcel.Workbooks.Open args(0)
objExcel.visible = True

objExcel.Run "Macro1"
objExcel.Run "Macro2"
objExcel.Run "Macro3"

objWorkbook.Close

objExcel.Quit

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

1 ответ1

0

Как сказал @Megamorf в своем комментарии, это действительно сложно сделать. Так что вам лучше использовать макрос запуска и запланированное начало для достижения вашей цели.

Как это устроено? Вы создаете стартовый макрос для Excel, который будет запускаться при каждом запуске Excel.

Если вы объедините это с запланированным запуском с помощью команды at из следующего вопроса: Запуск bat-файла с помощью планировщика Windows

Для вас AT-команда будет

at 20:30 /every:M,T,W,Th,F,S,Su "excel.exe"

Это начнется Excel каждый день в 8:30 вечера. Excel запустит макрос запуска.

Как отменить запланированное задание

  1. Нажмите "Пуск", выберите "Программы", "Стандартные", а затем нажмите "Командная строка".
  2. В командной строке введите следующую строку и нажмите клавишу ВВОД, чтобы отобразить список запущенных служб:

    чистый старт

  3. Если планировщик задач не отображается в списке, введите следующую строку и нажмите клавишу ВВОД:

    net start "планировщик задач"

  4. В командной строке введите следующую строку (используйте параметры, соответствующие вашей ситуации), а затем нажмите клавишу ВВОД:

    at \computername id /delete | / Удалить / да

\\ имя_компьютера - это компьютер, который находится в сети. Вам не нужно заполнять это.

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