这个过程可以简化吗?
首先,我在R:中手动打开此文件 C:\ r \ ExampleModel \ ModelScript.R
从R-Editor,当从打开的ModelScript.R文件运行下面的代码时,它会正确处理Model.R脚本。
source("C:\\R\\ExampleModel\\Model.R", echo=T)
在Excel中,我想运行上面的源代码而无需先从R手动打开ModelScript.R。我可以在下面的VBA代码中修改什么来自动处理Excel / VBA中的source()命令吗?如果批处理是唯一的选择,如果没有Rexcel,请使用提供的示例扩展。
Excel 2007 VBA代码:
Sub RRUN()
Dim rCommand As String
rCommand = "C:\\Program Files\\R\\R-3.0.0\\bin\\Rscript.exe --verbose C:\\R\\ExampleModel\\ModelScript.R"
'Timer Set to run full Model.R script
Application.Wait Now + TimeValue("00:00:05")
'Runs R Script and Arguements into process
Shell rCommand, vbNormalFocus
'Timer Set to run full Model.R Script
Application.Wait Now + TimeValue("00:00:05")
End Sub
注意:我尝试使用R.exe代替上面的Rscript.exe,但没有结果。
答案 0 :(得分:3)
您可能需要查看Visual Studio Tools for Office。对于Excel 2007,VSTO链接为here。
这是Excel中的example R(使用VTSO代码编写)。请查看标题为“其他应用程序”的部分。这是来自同一个人的另一个example。我不知道他们是否出售这些应用程序,或者是否所有内容都是定制的。
这是另一种可能的solution。我没有采用这种方法,因为我的应用程序有非常具体的要求。
我的观点是,即使您可以使用VBA将某些内容组合在一起,但看起来有更好的方案。
答案 1 :(得分:1)
以下似乎有效:
确保rscript.exe位于系统路径
中确保path = statement中的引号可用于文件名。我把它完全保留为我现在运行的那个而不是使它通用(更令人困惑)。
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 = "rscript ""C:\Users\Charles\SkyDrive\Documents\Development\G4H\Technical evaluation templates\Graphical analysis.R"""
errorCode = shell.Run(path, style, waitTillComplete)
End Sub
使用来自http://shashiasrblog.blogspot.co.uk/2013/10/vba-front-end-for-r.html的代码和MrFlick的建议将它们组合在一起。从我所看到的,它也应该是非常通用的。