在Excel中运行R脚本
关于如何做到这一点,没有太多的信息。我尝试在线学习一个博客,并在VBA中实现了以下代码(带有R文件的路径):-在Excel中运行R脚本,r,vba,excel,rexcel,R,Vba,Excel,Rexcel,关于如何做到这一点,没有太多的信息。我尝试在线学习一个博客,并在VBA中实现了以下代码(带有R文件的路径):- Sub RunRscript() '通过Shell运行外部R代码 'RScript的位置是'C:\R\u code' '脚本名称为'hello.R' 作为对象的暗壳 Set shell=VBA.CreateObject(“WScript.shell”) 将waitTillComplete设置为布尔值:waitTillComplete=True 将样式设置为整数:样式=1 将错误代码设置
Sub RunRscript()
'通过Shell运行外部R代码
'RScript的位置是'C:\R\u code'
'脚本名称为'hello.R'
作为对象的暗壳
Set shell=VBA.CreateObject(“WScript.shell”)
将waitTillComplete设置为布尔值:waitTillComplete=True
将样式设置为整数:样式=1
将错误代码设置为整数
将路径设置为字符串
path=“RScript C:\R\u code\hello.R”
errorCode=shell.Run(路径、样式、完成)
端接头
但是,当我在Excel中运行宏时,它基本上什么也不做,只是在RStudio中打开脚本。我没有得到任何错误,但它没有给出任何输出,只是在Rstudio中打开了R脚本。我做错了什么
另外,如果我需要在Excel中使用R,这个方法有效吗?或者基本上我需要安装软件RExcel
如需在Excel中使用R的任何其他链接/信息,将不胜感激。谢谢:)在RStudio开张似乎很奇怪。我建议直接通过R.exe运行它。从您告诉我们的内容来看,路径设置正确。因此,如果不需要输出,可以这样调用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的安装,看看是否还有其他问题。我和您有相同的问题,但“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\u Import\TransformData.R”,然后按enter键运行代码。如下图所示。您需要导航到C程序文件>R>版本>bin以查找Rscript.exe(可能是计算机上的不同路径) 一旦我实现了这一点,我在这里使用了Ibo提供的代码:
我在VBA中小心地使用了双引号,因为我的文件夹名中有一个空格。通过cmd.exe运行“RScript C:\R\u code\hello.R”时会发生什么情况?同样,我上面描述的只是在RStudioPossible副本中打开的,因此此代码看起来正确。已经尝试过了。我猜在Windows上,您不能简单地调用这样的可执行文件。类似于可执行文件C:\Program Files\R\R-3.4.0\bin\x64\Rscript.exe C:\R\u code\hello.RHello的路径,谢谢你的回答。我对编程很陌生。你能告诉我在哪里写这个-CMD/VBA代码吗?或者你只是想让我在上面问题中提到的代码中的某个地方编辑它?没有输出的代码可以工作(这意味着R Studio不能打开)-我想这就是它必须要做的。但是第二个,您的答案中提到的输出会给出错误编译错误:预期语句结束重试,我试图将其全部压缩到一行,但显然它不喜欢这样!我还没有测试过它,但如果可能的话,应该是后续问题()
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