【发布时间】:2014-06-05 14:25:23
【问题描述】:
我正在尝试使用 VBA 从 Excel 运行 R 脚本。理想情况下,我会使用 .R (Rscript) 名称来调用 R 并运行该进程,或者如果这不成功,则调用 Rscript.exe 并执行传递给它的文件名。
REXcel 不好,因为它需要 32 位版本的 Excel(而且我不是在 1989 年工作)
我在 (http://shashiasrblog.blogspot.co.uk/2013/10/vba-front-end-for-r.html) 找到了一个看起来很完美的脚本,经过适当的本地化后,它看起来像这样:
Sub RunRscript()
Dim shell As Object
Set shell = VBA.CreateObject("WScript.Shell")
Dim waitTillComplete As Boolean: waitTillComplete = True
Dim style As Integer: style = 1
Dim errorCode As Integer
Dim path As String
path = "C:\Users\Charles\SkyDrive\Documents\Development\G4H\Technical evaluation templates\Graphical analysis.R"
errorCode = shell.Run(path, style, waitTillComplete)
End Sub
这会失败并显示消息
运行时错误“-2147024894 (80070002)”: 对象“IWshShell3”的方法“运行”失败。
这并没有告诉我什么。我试过用谷歌搜索错误信息,但什么也没得到。
我已将 PATH 变量设置为包含 R 和 Rscript 所在的目录。
我怀疑这很简单,但似乎缺乏从 Excel 执行 R 的简单方法。
【问题讨论】:
-
“C:\Users\Charles\SkyDrive\Documents\Development\G4H\Technical evaluation templates\Graphical analysis.R”是什么样的?通常你会使用 RScript 来帮助运行一个脚本。你有没有引用那个 exe?
-
这是一个相当长的 R 脚本,用于生成各种标准图形。我正在尝试编写一套小程序,允许在 Excel 中收集数据(因为大多数人都有它),然后导出数据摘要以在 R 中处理(因为它的图形比 Excel 好得多) .我正在考虑通过从 Excel 中调用 R 过程来自动化它,而一点 VBA 似乎是显而易见的路线。
-
你可以从命令行运行它吗?如果是这样,你如何运行它。我不认为你可以像那样“运行”一个 R 文件。通常你有类似
Rscript.exe scriptname.R -
是的,从命令行运行它可以完美运行。 CL 版本是: rscript "C:\users\Charles ... \Graphical analysis.R" 这运行得很漂亮(令我惊讶),所以它与您所展示的完全一样。我假设必须有一些很好的简单方法可以使用 VBA 从 Excel 内部启动它(而不是距离原始脚本一百万英里)。