没有关于如何执行此操作的大量信息。我尝试在线学习博客并在VBA中实现以下代码(使用R文件的路径): -
Sub RunRscript()
'runs an external R code through Shell
'The location of the RScript is 'C:\R_code'
'The script name is 'hello.R'
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:\R_code\hello.R"
errorCode = shell.Run(path, style, waitTillComplete)
End Sub
然而,当我在Excel中运行宏时,它基本上什么都不做 - 只需在RStudio中打开脚本。我没有收到任何错误,但它没有提供任何输出 - 只需在Rstudio中打开R脚本。我做错了什么?
此外,如果我需要在Excel中使用R,这种方法是否有效或基本上我需要安装软件RExcel?
在Excel中使用R的任何其他链接/信息将不胜感激。感谢:)
答案 0 :(得分:1)
它在RStudio开放似乎很奇怪。我建议直接通过R.exe运行它。从您告诉我们的内容看起来PATH的设置都是正确的。因此,如果不需要输出,您可以像这样调用R.exe:
Sub RunRscript()
Shell ("R CMD BATCH C:\R_code\hello.R")
End Sub
如果你需要输出,那么你需要制作一个像这样的WshShell对象:
Sub RunRscript()
Dim output As String
output = CreateObject("WScript.Shell").Exec("R CMD BATCH C:\R_code\hello.R").StdOut.ReadAll
End Sub
这是运行R脚本的旧方法,但暂时应该可以正常工作。您可能需要更多地查看R的安装,看看是否还有其他问题。
答案 1 :(得分:0)
我和您有同样的问题,但是“ R CMD BATCH”解决方案对我不起作用。这是对我有用的东西。
首先,我测试了是否可以通过命令行运行R脚本来清除所有问题。
打开命令提示符,然后尝试在“>”符号,“ path Rscript.exe”“要运行的R脚本的路径”之后键入。在我的情况下,我键入“ C:\ Program Files \ R \ R-3.6.0 \ bin \ Rscript.exe”“ C:\ Users \ phung \ Documents \ Angela \ DB_Import \ TransformData.R”,然后按Enter键运行码。例如,请参见下图。您需要导航到C程序文件> R> version> bin来找到Rscript.exe(可能是计算机上的其他路径)。
一旦我做到这一点,我就在这里使用了Ibo提供的代码: Running R scripts from VBA
Function Run_R_Script(sRApplicationPath As String, _
sRFilePath As String, _
Optional iStyle As Integer = 1, _
Optional bWaitTillComplete As Boolean = True) As Integer
Dim sPath As String
Dim shell As Object
'Define shell object
Set shell = VBA.CreateObject("WScript.Shell")
'Wrap the R path with double quotations
sPath = """" & sRApplicationPath & """"
sPath = sPath & " "
sPath = sPath & sRFilePath
Run_R_Script = shell.Run(sPath, iStyle, bWaitTillComplete)
End Function
Sub Run_R
Dim iEerrorCode As Integer
iEerrorCode = Run_R_Script("C:\Program Files\R\R-3.6.0\bin\Rscript.exe", """C:\Users\phung\Documents\Angela\1_MR-100 project\DB ready VBA code\TransformData.R""")
End Sub
由于在文件夹名称中有空格,因此在VBA中小心使用双引号。