从Excel VBA运行R而不使用RExcel

这个过程可以简化吗?

首先,我在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()命令? 如果批处理过程是唯一的select,那么请使用所提供的示例扩展。

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,没有结果。

您可能需要查看Visual Studio Tools for Office 。 对于Excel 2007,VSTO链接在这里 。

以下是Excel中R的示例 (使用VTSO代码编写)。 看看“其他应用程序”一节。 这是来自同一个人的另一个例子 。 我不知道他们是否出售这些应用程序,或者如果一切都是定制的。

这是另一个可能的解决scheme 我没有追求这个方法,因为我的应用程序有非常特殊的要求。

我的观点是,即使你可以用VBA把东西放在一起,看起来好像有更好的scheme。

以下似乎工作:

确保rscript.exe在您的系统path中

确保在path =语句中引用的逗号适用于文件名。 我已经把它和我现在正在运行的那个完全分开了,而不是把它变成通用的(而且更令人困惑)。

 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的build议放在一起的。 从我可以看到它应该也是相当通用的。