Запустить R скрипт из VBA - PullRequest
       3

Запустить R скрипт из VBA

0 голосов
/ 10 апреля 2020

Я пробовал несколько примеров, найденных на форумах, чтобы запустить мой R-скрипт из VBA, но он не работает. Сценарий R хорошо работает в одиночку. Вот код, который я запустил:

Sub RunRscript()

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:\Users\Documents\Code.R"
errorCode = shell.Run(path, style, waitTillComplete)

End Sub

Я получаю сообщение об ошибке, в котором говорится, что запущенный объект "IWshShell3" не выполнен. Есть ли что-то особенное, чтобы написать код R до запуска этого макроса? Должен ли я загрузить пакет или файлы в указанной папке c?

Ответы [ 3 ]

0 голосов
/ 10 апреля 2020

Вот как бы я это сделал.

Sub RunRscript1()
    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 to R executable:  C:\your_path\Documents\R\R-3.2.5\bin\x64\R.exe
    ' path to R script:  C:\your_path\Documents\R\Download.r
    ' see more setup details here
    ' http://shashiasrblog.blogspot.com/2013/10/vba-front-end-for-r.html
    path = "C:\your_path\Documents\R\R-3.2.5\bin\x64\R.exe CMD BATCH --vanilla --slave C:\your_path\Documents\R\Download.r"
    'path = """C:\your_path\Documents\R\R-3.2.5\bin\i386"" C:\Users\rshuell001\Documents\R\Download.R"
    errorCode = shell.Run(path, style, waitTillComplete)
End Sub
0 голосов
/ 16 апреля 2020

Наконец, вот решение, которое работает хорошо:

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 Demo()
Dim iEerrorCode As Integer
iEerrorCode = Run_R_Script("C:\Program Files\R\R-3.6.1\bin\x64\Rscript", 
"C:\Users\myname\Desktop\Code.R")
End Sub
0 голосов
/ 10 апреля 2020

Ваш скрипт не может найти исполняемый файл (RScript). Укажите абсолютный путь, тогда он должен хорошо работать.

Смотрите здесь, где его найти: http://datacornering.com/how-to-run-r-scripts-from-the-windows-command-line-cmd/

Правка:
Я видел прямо сейчас, что вы можете столкнуться с дальнейшими проблемами, связанными с отсутствующими средами.
См. здесь: Настройка .libPaths () для запуска сценариев R из командной строки с использованием Rscript.exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...