我已经自动化了从R,使用Openxlsx和RDCOMClient包访问VBA宏的过程.以下是代码:
功能:
OpenExcel_5param <- function(directory,filename, MacroName, param1, param2,
param3,param4, param5)
{
# Open a specific workbook in Excel:
data <- paste(c(directory,'/',filename,'.xlsm'), collapse = '')
xlApp <- COMCreate("Excel.Application")
xlWbk <- xlApp$Workbooks()$Open(data)
# this line of code might be necessary if you want to see your spreadsheet:
xlApp[['Visible']] <- TRUE
xlApp$Run(MacroName,param1,param2, param3, param4, param5)
# Close the workbook and quit the app:
xlWbk$Close(FALSE)
xlApp$Quit()
# Release resources:
rm(xlWbk, xlApp)
gc()
}
Run Code Online (Sandbox Code Playgroud)
访问此功能的代码:
OpenExcel_5param(Common_folder,VBA_CodeFileName,"ConsumptionValidation.MARM",r_extracts,"1.UniqueUPC_Nielsen",10000,original_files,"MARM")
当我运行代码时,我收到以下错误:
80020009
.COM中的错误(x,名称,...):
当我第一次运行代码时,它工作正常.从第二次开始,它开始给我这个错误.相同的代码在另一台计算机上运行正常.在第三台计算机上,如果我保持excel文件打开,它可以正常工作,但在我的计算机上根本不工作.我尝试过不同版本的R,但没有帮助.