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

Posted

技术标签:

【中文标题】通过 R 运行 .vbs 脚本,在任务计划程序中安排【英文标题】:Running a .vbs script through R, scheduled in Task Scheduler 【发布时间】:2015-10-02 12:22:27 【问题描述】:

我有一个 VBS 脚本,它获取一个 Excel 文件并将其保存为 PDF。我将此 vbs 称为在通过任务计划程序自动化的 RScript 中。当我在 R 中手动运行 RScript 时,它运行得很好。但是,当我在任务计划程序中安排它时,任务说它成功完成,但没有保存 PDF 文件。运行 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

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

常规标签: 无论用户是否登录都运行 以最高权限运行

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

【问题讨论】:

http://blogs.technet.com/b/askperf/archive/2015/02/18/help-my-scheduled-task-does-not-run.aspx 【参考方案1】:

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

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

再次运行任务,查看任务管理器中是否出现新的EXCEL.exe进程。如果是这样,请在任务设置中打开“仅在用户登录时运行”选项,这样您应该会看到 Excel UI 及其显示的任何消息。

【讨论】:

在“Start in”中指定的工作目录,.Rout 被创建(无论我是否指定)没有错误。我删除了您建议的行,仍然没有错误。我将任务更改为“仅在用户登录时运行”选项,任务按原样完成。所以现在的问题是如何让它与“用户登录时运行”选项一起工作? 见第二个回答here 谢谢。它似乎奏效了。简直太疯狂了,只添加一个文件夹 (C:\Windows\SysWOW64\config\systemprofile\Desktop) 就能解决这个问题。

以上是关于通过 R 运行 .vbs 脚本,在任务计划程序中安排的主要内容,如果未能解决你的问题,请参考以下文章

WIN7 64位系统任务计划程序里运行VBS脚本 报错,脚本本身没问题!请问怎么解决?

任务计划程序 BAT、PS1、VBS,无法运行

怎么让vbs脚本开机自动启动

作为计划任务运行 Visual Basic 脚本询问我要如何打开文件

使用任务计划程序自动化 Rscripts; R脚本未运行

在后台模式下从 Nodejs 执行 VBS(任务计划程序或 Windows 服务)