r - 通过命令提示符 Shell 将 VBA 转换为 R

标签 r excel vba command-line quantmod

我正在尝试在 VBA 中构建一个将在 R 中执行的脚本。我已经能够通过 VBA 的 shell 命令执行 R 脚本,但当我向代码添加参数时却无法执行此操作。

以下是我执行 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
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 没有提取任何数据。如果我不传递任何变量,而只是让 excel 运行一个 R 脚本,打印出“Hello World!”并保存 csv,这样就可以了。但是当我添加变量参数时它失败了。如果我在 R 脚本中对变量进行硬编码,则 csv 将起作用,因此我知道 R 代码是合理的,但在通过命令行传递时不会获取参数。

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

1) 将参数传递给命令行

2) R 中参数的接受

3)两者的结合。

有什么想法吗?谢谢。

最佳答案

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

关于r - 通过命令提示符 Shell 将 VBA 转换为 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46393004/

相关文章:

java - mlr/FSelector 安装错误...java 相关

r - 如何在 Shiny eventReactive 处理程序中监听多个事件表达式

r - 从n x m矩阵转换为R中的长矩阵

python - 如何使用python将数据写入excel文件而不更改原始文件中的格式单元格?

excel - 如何在vba代码中调用用户定义的函数

error-handling - VBA:在#VALUE错误上格式化单元格

VBA 问题 - 未找到此组件的许可信息 - 如何识别哪个组件?

r - 如何在R中创建连接两点的线

excel - 非 ActiveX 滚动条更改事件?

mysql - 如何实现非程序员对 SQL 数据库的频繁批量更新。数据库每次都应该从 Excel 导入吗?