There isn’t a lot of information on how to do this. I tried to study a blog online and implemented the following code in VBA(with the path of the R file):-
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
However, when I run the macro in Excel, it basically does nothing-just opens the script in RStudio. I am not getting any error, but it’s not giving any output-just opens the R script in Rstudio. What am I doing wrong?
Also, does this method work or basically I need to install the software RExcel, if I need to use R in Excel?
Any other link/information to use R in Excel would be appreciated. Thanks:)
It seems quite odd that it is opening in RStudio. I would suggest running it straight through R.exe. It looks like the PATH is setup all correctly from what you have told us. So you can call R.exe like this if don’t need the output:
Sub RunRscript() Shell ("R CMD BATCH C:\R_code\hello.R") End Sub
If you need the output then you’ll need to make a WshShell object like this:
Sub RunRscript() Dim output As String output = CreateObject("WScript.Shell").Exec("R CMD BATCH C:\R_code\hello.R").StdOut.ReadAll End Sub
This is the older way to run R scripts but should work fine for the time being. You may want to look into your installation of R a bit more to see if there are any other problems.
I had the same issue as you, but the “R CMD BATCH” solution didn’t work for me. Here’s what worked for me.
First, I tested whether I could run my R script via the command line to weed out any issues.
Open your command prompt and try typing after the “>” symbol, “path Rscript.exe” “path to R script you want to run”. In my case I typed “C:\Program Files\R\R-3.6.0\bin\Rscript.exe” “C:\Users\phung\Documents\Angela\DB_Import\TransformData.R” then hit enter to run the code. See image below for example. You will need to navigate to your C program files>R>version>bin to find Rscript.exe (might be different path on your computer).
Once I got this to work, I used adapted the code provided by Ibo here:
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
I was careful to use double quotations in VBA because I had a space in my folder name.