2013-10-03 63 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的建議拼在一起的。從我可以看到它應該也是非常通用的。