Je dois gérer un workflow impliquant des scripts R et VBA-code
. Je voudrais exécuter le processus en R (où se trouve la majeure partie de mon code) et de temps en temps appeler VBA-code
pour un calcul spécifique.
Je préparerais les entrées pour VBA dans R, j'écrirais quelque part les résultats (.csv, base de données), puis j'utiliserais les résultats dans le reste du R-script.
Le mieux serait bien sûr de déplacer tout le code en R mais ce n'est pour l'instant pas possible. Le VBA-code
est assez complexe. Traduire cela en R sera une tâche difficile à long terme.
Y a-t-il une possibilité de gérer dans R un tel flux de travail?
Écrivez un wrapper VBscript qui appelle votre VBA. Voir Manière d'exécuter des macros Excel à partir de la ligne de commande ou d'un fichier batch?
Exécutez votre VBscript via les fonctions R ( system
ou Shell
).
Voici une méthode qui ne nécessite pas de wrapper VBscript. Vous devrez installer le package RDCOMClient
library(RDCOMClient)
# Open a specific workbook in Excel:
xlApp <- COMCreate("Excel.Application")
xlWbk <- xlApp$Workbooks()$Open("C:\\Temp\\macro_template.xlsm")
# this line of code might be necessary if you want to see your spreadsheet:
xlApp[['Visible']] <- TRUE
# Run the macro called "MyMacro":
xlApp$Run("MyMacro")
# Close the workbook and quit the app:
xlWbk$Close(FALSE)
xlApp$Quit()
# Release resources:
rm(xlWbk, xlApp)
gc()