У меня есть макрос Excel VBA, который обновляет файл Excel, в основном просматривая записи, чтобы определить, прошли ли некоторые новые сотрудники обучение в различные моменты до того, как они достигнут 90 дней, и, если нет, рассылает электронные письма группам рассылки в виде напоминание. Я хотел бы, чтобы этот макрос запускался автоматически один раз в день, чтобы мой компьютер просматривал файл и запускал электронные письма, когда для каждой записи наступает конкретный этап.
Макрос Excel работает отлично. Когда я вручную запускаю файл VBS, он работает отлично.
Когда я пытаюсь запустить (вручную или по расписанию) из планировщика задач, журнал показывает, что он завершается, но макрос не запускается.
Я попытался использовать оба параметра: «Запускать только когда пользователь вошел в систему» и «Запускать независимо от того, вошел пользователь в систему или нет», и оба результата имели одинаковый результат. Моя учетная запись пользователя (Bachenheimere) отображается как та, которая используется для запуска задачи, поэтому у меня, очевидно, есть права на запуск файла.
Для планировщика заданий я использую Действие: Запустите программу
Сценарий программы: "C:\Windows\SysWOW64\cscript.exe"
Добавить аргументы: "C:\Users\Bachenheimere\RunExcelMacroForCoachTracking.vbs"
Опять же, журнал планировщика заданий показывает, что он успешно завершается примерно через 1,5 минуты (когда я запускаю вручную, он завершается примерно через 15-20 секунд). Я бы предпочел не запускать файл VBS вручную каждый день, поэтому, если кто-то может помочь бедному новичку в этом, я был бы очень признателен!
Вот код файла VBS:
Dim xlApp, xlBook
Set objFileToWrite = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Users\Bachenheimere\file.txt",2,true)
Set xlApp = CreateObject("Excel.Application")
objFileToWrite.WriteLine(FormatDateTime(Now) & "Create Excel Object")
xlApp.Application.Visible = True
objFileToWrite.WriteLine(FormatDateTime(Now) & "App Visible = True")
xlApp.DisplayAlerts = False
objFileToWrite.WriteLine(FormatDateTime(Now) & "Display ALerts = False")
Set xlBook = xlApp.Workbooks.Open("H:\EmCare\Clinical Services\Provider Coaching\NEOU Tracking\Coach Trackingv3.xlsm", 0, True)
objFileToWrite.WriteLine(FormatDateTime(Now) & "Excel book opened")
xlApp.Run "Sheet1.SendReminderMail"
objFileToWrite.WriteLine(FormatDateTime(Now) & "Macro is run")
xlBook.Save
objFileToWrite.WriteLine(FormatDateTime(Now) & "Macro is saved")
xlBook.Close
objFileToWrite.WriteLine(FormatDateTime(Now) & "Book closed")
xlApp.Quit
objFileToWrite.WriteLine(FormatDateTime(Now) & "App Quit")
objFileToWrite.Close
Set objFileToWrite = Nothing
set xlBook = Nothing
Set xlApp = Nothing
WScript.Echo "Your Automated Task successfully ran at " & TimeValue(Now)
WScript.Quit