J'essaie de créer un script dans VBA qui sera exécuté dans R. J'ai déjà été capable d'exécuter des scripts R via la commande shell de VBA, mais je n'ai pas pu le faire lorsque j'ai ajouté des arguments au code.Invite de commandes VBA à R via Shell
Ce qui suit est mon code VBA pour exécuter 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)
Voici le code que je suis en cours d'exécution en 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')
Je sais que cela échoue parce que le fichier csv ne sauve pas vers le bas , donc il n'y a pas de données tirées par R. Si je ne passe pas de variables et juste excel exécuter un script R qui imprime dire, "Bonjour tout le monde!" et enregistre le CSV, cela fonctionne. Mais quand j'ajoute les arguments variables cela échoue. Si je code dur les variables dans le script R, le csv fonctionnera, donc je sais que le code R est sain, mais ne reprend pas les arguments quand il est passé par la ligne de commande.
Je ne sais pas si le problème est sur l'extrémité VBA ou l'extrémité R. Tout ce que je peux identifier est que le problème est soit:
1) le passage des arguments de ligne de commande
2) l'acceptation de l'argument dans R
3) une combinaison des deux .
Des idées? Merci.