运行 通过 R 的 .vbs 脚本,在任务计划程序中计划

Running a .vbs script through R, scheduled in Task Scheduler

我有一个 VBS 脚本,它接受一个 Excel 文件并将其保存为 PDF。我将此 vbs 称为在通过任务计划程序自动执行的 RScript 中。当我在 R 中手动 运行 时,RScript 运行 就很好了。但是,当我在 Task Scheduler 中安排它时,任务说它成功完成,但 PDF 文件没有保存。 Task Scheduler 运行使 RScript 导致它实际上没有完成有什么不同?

这是 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

这是我设置计划任务的方式:

常规选项卡:
运行是否选择用户登录
运行 勾选了最高权限

操作选项卡:
Program/Script: C:\R_Program_Files\R-3.2.0\bin\x64\R.exe
添加参数(可选):CMD BATCH C:\test\HourlyR.R

问题可能出在Excel,但最好的办法是逐步调试。首先,在任务的 "Start in" 选项中指定工作目录。然后 运行 任务,导航到该目录并检查执行任务时是否创建了 .Rout 文件。它可以包含错误和消息。如果 R 没有产生任何错误,删除

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

运行任务,查看任务管理器中是否出现新的EXCEL.exe进程。如果是这样,请在任务设置中打开 "Run only when user is logged on" 选项,这样您应该会看到 Excel UI 及其显示的任何消息。