R 使用带有.xlsm文件的OpenXlsx复制工作表

R 使用带有.xlsm文件的OpenXlsx复制工作表,r,excel,duplicates,xlsm,vba,R,Excel,Duplicates,Xlsm,Vba,我正在使用openxlsx包的基本功能在excel文件中写入数据。 当我使用.xlsx文件写入数据时,没有问题。 当我尝试使用.xlsm(带宏的文件)写入数据时,在保存.xlsm文件后,Vba项目中有重复的图纸,这些新图纸是空的 我的代码如下: OutputBook = loadWorkbook("DataImportOutput.xlsm") writeData(OutputBook, "Database", MyData, rowNames = TRUE, startCol=1

我正在使用openxlsx包的基本功能在excel文件中写入数据。 当我使用.xlsx文件写入数据时,没有问题。 当我尝试使用.xlsm(带宏的文件)写入数据时,在保存.xlsm文件后,Vba项目中有重复的图纸,这些新图纸是空的

我的代码如下:

   OutputBook = loadWorkbook("DataImportOutput.xlsm")

   writeData(OutputBook, "Database", MyData, rowNames = TRUE, startCol=1, startRow=1)

   saveWorkbook(OutputBook, "DataImportOutput.xlsm", overwrite = TRUE)
在R代码的末尾,“DataImportOutput.xlsm”与is Vba项目中的图纸有重复。使用同一个文件,但没有宏(.xlsx),没有重复


为什么会发生工作表的重复?有一种方法可以避免使用.xlsm文件复制图纸?

您需要明确说明“VBA项目中工作表/对象的倍增”的确切含义。在代码运行之前和之后,DataImportOutput.xlsm的VBA项目中有多少工作表/对象?工作簿启用了宏(.xlsm),是否在Excel中打开,以及是否有宏在打开时运行(例如,
thiswoolk
中的
workbook\u open
处理程序)。在R中运行代码之前,DataImportOutput.xlsm有8个工作表。在R代码执行后,DataImportOutput.xlsm有16个工作表,但这些新的8个工作表仅在VBA项目中可见(如果我在Excel中打开xlsm文件,我有最初的8个工作表,其中包含使用R代码进行的修改)。这八张新纸是空的。VBA宏仅用于在以后的步骤中更改格式。看起来您的R代码正在以某种方式损坏VBA项目。我想
writeData
不是你的代码吗?确保所有COM对象都已正确释放。在命令之间运行
names(OutputBook)
,查看问题是否出在加载工作簿或修改工作簿时