Ответ 1
-
Напишите оболочку VBscript, которая вызывает ваш VBA. См. Способ запуска макросов Excel из командной строки или командного файла?
Мне нужно управлять рабочим процессом с использованием R-скриптов и VBA-code
.
Я хотел бы запустить процесс в R (где большая часть моего кода) и время от времени вызывать VBA-code
для конкретного вычисления.
Я бы подготовил входные данные для VBA в R, где-то записывал результаты (.csv, database), а затем использовал результаты в остальной части R- script.
Лучшим было бы, конечно, переместить весь код в R, но это пока невозможно. VBA-code
довольно сложный. Перевод этого в R будет сложной долгосрочной задачей.
Есть ли возможность управлять в R таким потоком работы?
Напишите оболочку VBscript, которая вызывает ваш VBA. См. Способ запуска макросов Excel из командной строки или командного файла?
Здесь используется метод, который не требует оболочки VBscript. Вам нужно установить пакет 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()