2013-10-03 68 views
2

此过程可以简化吗?不使用RExcel从Excel VBA运行R

首先,我手动中的R打开这个文件: C:\ r \ ExampleModel \ ModelScript.R

从R-编辑器中,当下面的代码从开启ModelScript.R文件运行它会正确处理Model.R脚本。

source("C:\\R\\ExampleModel\\Model.R", echo=T) 

在Excel中,我想在不与R手动打开ModelScript.R首先运行上面的源代码。在下面的VBA代码中有什么可以修改的,以便从Excel/VBA自动处理source()命令?如果批处理过程是唯一的选择,那么请使用所提供的示例扩展。

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 

注:我试着在上面到位的Rscript.exe使用运行R.exe,但没有任何结果。

+1

尽管有用,但Excel R维基并未解释如何... http://rwiki.sciviews.org/doku.php?id=tips%3adata-io%3ams_windows&s=excel –

+0

不确定你需要转义在可执行文件的路径中反斜杠。 –

+0

上述VBA代码确实以上述格式Tim运行Rscript.exe和R.exe。对于一个简单的PDF格式图工作正常......我试图让它在一个更复杂的多功能代码块上工作。 –

回答

3

你可能想看看Visual Studio Tools for Office。对于Excel 2007,VSTO链接是here

这是Excel中的R的example(使用VTSO代码编写)。查看标题为“其他应用程序”的部分。这是来自同一个人的另一个example。我不知道他们是否出售这些应用程序,或者如果一切都是定制的。

这是另一个可能的solution。我没有采用这种方法,因为我的应用程序有非常特殊的要求。

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

1

以下似乎工作:

确保rscript.exe是在你的系统路径

确保在文件名的路径=语句工作中的引号。我已经完全按照我现在正在运行的那个而不是使其通用(并且更令人困惑)。

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的建议拼在一起的。从我可以看到它应该也是非常通用的。