VBA到R通过命令提示符壳

我正在尝试在R中创build一个将在R中执行的脚本。我已经能够通过VBA的shell命令执行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拉动。如果我没有传递variables,只要有excel运行R脚本打印说:“Hello World! 并保存csv,这工作。 但是当我添加可变参数失败。 如果我在R脚本中对variables进行硬编码,那么csv就可以工作,所以我知道R代码是正确的,但是在通过命令行传递的时候不会在参数上出现。

我不知道问题是在VBA端还是在R端。 我只能确定问题在于:

1)将parameter passing给命令行

2)接受R中的论点

3)两者的结合。

有任何想法吗? 谢谢。

我是一个白痴。 我的路我错了。 这个代码完美地工作,像梦一样传递variables。 如果任何人想引用或使用这个代码的类似的项目,你可以自由地这样做。 只要确保你有正确的文件path:P