运行 Excel 中的 R 脚本
Run R script in Excel
关于如何执行此操作的信息不多。尝试在网上研究了一篇博客,在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?
任何其他 link/information 在 Excel 中使用 R 的人将不胜感激。谢谢:)
它在 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 的安装,看看是否还有其他问题。
我遇到了与您相同的问题,但 "R CMD BATCH" 解决方案对我不起作用。这是对我有用的。
首先,我测试了我是否可以通过命令行 运行 我的 R 脚本来排除任何问题。
打开命令提示符并尝试在“>”符号后输入 "path Rscript.exe" "path to R script you want to run"。在我的例子中,我输入了 "C:\Program Files\R\R-3.6.0\bin\Rscript.exe" "C:\Users\phung\Documents\Angela\DB_Import\TransformData.R" 然后回车到 运行 代码。例如,请参见下图。您将需要导航到您的 C 程序文件>R>版本>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_MR-100 project\DB ready VBA code\TransformData.R""")
End Sub
我在 VBA 中小心使用了双引号,因为我的文件夹名称中有一个 space。
关于如何执行此操作的信息不多。尝试在网上研究了一篇博客,在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?
任何其他 link/information 在 Excel 中使用 R 的人将不胜感激。谢谢:)
它在 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 的安装,看看是否还有其他问题。
我遇到了与您相同的问题,但 "R CMD BATCH" 解决方案对我不起作用。这是对我有用的。
首先,我测试了我是否可以通过命令行 运行 我的 R 脚本来排除任何问题。
打开命令提示符并尝试在“>”符号后输入 "path Rscript.exe" "path to R script you want to run"。在我的例子中,我输入了 "C:\Program Files\R\R-3.6.0\bin\Rscript.exe" "C:\Users\phung\Documents\Angela\DB_Import\TransformData.R" 然后回车到 运行 代码。例如,请参见下图。您将需要导航到您的 C 程序文件>R>版本>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_MR-100 project\DB ready VBA code\TransformData.R""")
End Sub
我在 VBA 中小心使用了双引号,因为我的文件夹名称中有一个 space。