2016-12-28 7 views
0

У меня есть макрос, который редактирует скрипт R. Это R сценарий, то должен быть вызван следующим VBA:Запуск скрипта R в VBA Неправильный каталог

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 = """" & "C:\Program Files\R\R-3.3.2\bin\i386\R.exe" & """ """ & "R RAM Cluster Script.R" & """" 

errorCode = shell.Run(path, style, waitTillComplete) 

Приведенный выше код был от this question.

Когда я выполнить макрос, однако, R Command Line дает мне ошибку, указав:.

'\\dm\home\myaccount\*Path of my original Excel File*' 
"CMD.EXE was started with the above path as the current directory. 
    UNC Paths are not supported. Defaulting to Windows directory. 
    Argument 'R RAM Cluster Script.R' Ignored" 

Сценарий хранится в папке, что моя книга Excel находится в

Может кто-нибудь помочь меня с поиском моей проблемы?

+0

Что произойдет, если вы попытаетесь запустить скрипт ** R **, заменив последнюю строку на 'shell.Run path, 1, True'? это работает ? –

+0

К сожалению, нет ... Я получаю ту же ошибку. – reggie86

+0

где хранится этот файл R RAM Cluster Script.R? – cyboashu

ответ

1

Попробуйте это:

Sub test() 
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 = """C:\Program Files\R\R-3.3.1\bin\RScript.exe""" & """c:/temp/R RAM Cluster Script.R""" 

errorCode = shell.Run(path, style, waitTillComplete) 

End Sub 
+0

Измените r.exe на rscript.exe для пакетных аргументов. – PhilC

+0

Попробуйте добавить в свой аргумент путь к файлу R 'c: \ YOUR DIR \ R RAM ...'. Ошибка связана с тем, что rscript не находит скрипт. – PhilC

+0

Еще одна попытка? c:/mypath изменение примечания в направлении косой черты – PhilC

0

Я бы предложил попробовать использовать PowerShell в качестве оболочки для вашего сценария, потому что он поддерживает пути UNC. Итак, что-то вроде этого должно работать:

path = "Powershell.exe -executionpolicy bypass -Command &{'C:\Program Files\R\R-3.3.2\bin\i386\R.exe " & ThisWorkbook.Path & "\R RAM Cluster Script.R'}" 
+0

Это помогло обойти проблему с каталогом, но из-за пространства между «Программой» и «Файлами» он ищет исполняемый файл под названием 'C : \ Program' – reggie86

+0

ах, я исправлю свой ответ – KySoto

+0

Теперь я получил неожиданную ошибку токена для PowerShell. Он говорит: – reggie86