VBA 通过命令提示符到 R Shell

VBA to R through Command Prompt Shell

我正在尝试在 VBA 中构建一个将在 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 中 运行ning 的代码:

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 提取。如果我没有传递任何变量并且只有 excel 运行 一个 R 脚本打印说 "Hello World!" 并保存有效的 csv。但是当我添加变量参数时它失败了。如果我在 R 脚本中对变量进行硬编码,csv 将起作用,因此我知道 R 代码是正确的,但在通过命令行传递时没有获取参数。

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

1) 将参数传递给命令行

2) R中参数的接受

3) 两者的结合。

有什么想法吗?谢谢

我是个白痴。我走错了路。这段代码完美地工作并且像梦一样传递变量。如果有人想在类似项目中引用或使用此代码,您可以随意这样做。只要确保你有正确的文件路径:P