Запустить R скрипт в 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. Я не получаю никакой ошибки, но он не дает никакого вывода - просто открывает скрипт R в Rstudio. Что я делаю неправильно?
Кроме того, этот метод работает или мне нужно установить программное обеспечение RExcel, если мне нужно использовать R в Excel?
Любая другая ссылка / информация для использования R в Excel будет принята с благодарностью. Спасибо:)
3 ответа
Кажется довольно странным, что он открывается в 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, чтобы увидеть, есть ли другие проблемы.
Предыдущие ответы верны, но вот почему. Путь, который вы используете для WScript.Shell, — это то, что выполняется. Это похоже на двойной щелчок по файлу в проводнике.
Операционная система видит расширение файла (.R) в пути и говорит: «Я знаю, что с этим делать! Приложением по умолчанию для .R является RStudio. Поэтому она открывает RStudio и указанный файл.
У меня была та же проблема, что и у вас, но решение "R CMD BATCH" у меня не сработало. Вот что у меня сработало.
Во-первых, я проверил, могу ли я запустить свой сценарий R через командную строку, чтобы устранить любые проблемы.
Откройте командную строку и попробуйте ввести после символа ">" "путь 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> версия> bin, чтобы найти Rscript.exe (на вашем компьютере это может быть другой путь).
Как только это заработало, я использовал адаптированный код, предоставленный Ibo здесь: Запуск сценариев R из 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, потому что в имени моей папки был пробел.