2015-07-14 3 views
2

У меня есть сценарий VBS, который берет файл Excel и сохраняет его как PDF. Я называю это vbs как в RScript, который автоматизирован через Task Scheduler. RScript работает отлично, когда я запускаю его вручную в R. Однако, когда это запланировано в Планировщике задач, задача говорит, что она завершена успешно, но файл PDF не сохраняется. Что отличаетс от планировщика заданий, который работает с RScript, чтобы это на самом деле не завершилось?Запуск сценария .vbs через R, запланированного в планировщике заданий

Вот RScript, который я сохранил как HourlyR.R в той же папке C: \ test.

shell.exec("C:/test/HourlyNew.vbs") 

Вот код для HourlyNew.vbs

Option Explicit 

ExcelMacro 

Sub ExcelMacro() 

    Dim xlApp 
    Dim xlBook 
    Dim xlSheet 

    Set xlApp = CreateObject("Excel.Application") 
    Set xlBook = xlApp.Workbooks.Open("C:\\test\\Hourly.xlsm", 0, False) 
    Set xlSheet = xlBook.Worksheets("HourlyDashboard") 

    xlApp.DisplayAlerts = False 
    xlApp.Visible = False 


    xlSheet.ExportAsFixedFormat 0, "c:\\test\\HourlyDashboard.pdf", 0, 1, 0, , , 0 
    xlBook.Close 
    xlApp.Quit 

    Set xlBook = Nothing 
    Set xlApp = Nothing 

End Sub 

Вот как я моя Запланированная задача создать:

Вкладка Общие:
Выполнить ли вход в систему или пользователь не выбрано
Пробег с наивысшими привилегиями проверен

Вкладка «Действия»:
Программа/скрипт: C: \ R_Program_Files \ R-3.2.0 \ Bin \ x64 \ r.exe
Добавить аргументы (необязательно): CMD BATCH C: \ Test \ HourlyR.R

+0

[http://blogs.technet.com/b/askperf/archive/2015/02/18/help-my-scheduled-task-does-not-run.aspx](http://blogs.technet .com/b/askperf/archive/2015/02/18/help-my-schedule-task-does-not-run.aspx) – Bond

ответ

0

Проблема, вероятно, в Excel, но лучше всего отлаживать его шаг за шагом. Сначала укажите рабочий каталог в задаче «Начать работу». Затем запустите задачу, перейдите к этому каталогу и проверьте, создан ли файл .Rout при выполнении задачи. Он может содержать ошибки и сообщения. Если R не создает каких-либо ошибок, удалить

xlApp.DisplayAlerts = False 
xlApp.Visible = False 
xlBook.Close 
xlApp.Quit 

задачу запустить снова, и проверьте, появится ли новый процесс EXCEL.EXE в диспетчере задач. Если это так, включите опцию «Запускать только когда пользователь вошел в систему» ​​в настройках задачи, таким образом вы должны увидеть Excel UI и любые сообщения, которые он отображает.

+0

Указанный рабочий каталог в «Начало», .Rout был создан (я указываю или не) без ошибок. Я удалил строки, которые вы предложили, но ошибок нет. Я изменил задачу на вариант «Запускать только когда пользователь вошел в систему», и задача завершена так, как должна. Итак, теперь вопрос заключается в том, как заставить его работать с параметром «Запуск при входе пользователя в систему или нет»? – GreenboyCJ

+0

См. Второй ответ [здесь] (http://stackoverflow.com/questions/1177974/word-interop-not-working-in-a-scheduled-task) – cyberj0g

+0

Спасибо. Кажется, он сработал. Сумасшедший, как просто добавление одной папки (C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop) устраняет эту проблему. – GreenboyCJ

Смежные вопросы