1
我想在VBA中構建一個將在R中執行的腳本。我已經能夠通過VBA的shell命令執行R腳本,但在添加參數時無法執行到代碼。VBA到R通過命令提示符殼
以下是我的VBA代碼來執行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
Dim var1
Dim var2
Dim var3
var1 = Sheets("Command").Range("ticker").Value
var2 = Sheets("Command").Range("type").Value
var3 = Sheets("Command").Range("period").Value
path = "Rscript C:\Documents\RProjects\FA.R " & var1 & " " & var2 & " " & var3
errorCode = shell.Run(path, style, waitTillComplete)
以下是我在R中運行代碼:
setwd("C:/Documents/RProjects/WorkingLibrary")
library(quantmod)
args = commandArgs(trailingOnly=T)
var1 = as.character(args[1])
var2 = as.character(args[2])
var3 = as.character(args[3])
x = getFinancials(var1)
Data = viewFinancials(get(x), type=var2, period=var3)
write.csv(Data,'TestData.csv')
我知道這是失敗,因爲CSV文件沒有保存下來,因此沒有數據被R拉取。如果我沒有傳遞任何變量,只需要運行一個R腳本,打印出「Hello World!」。並保存csv,這工作。但是,當我添加可變參數失敗。如果我在R腳本中對變量進行硬編碼,csv就可以工作,因此我知道R代碼是合理的,但是不通過命令行傳遞參數。
我不知道問題出在VBA端還是R端。所有我可以識別是,這個問題是在任一:
1)的參數的通過命令行
2)的說法中的R
3所述接受)兩者的組合。
任何想法?謝謝。