【发布时间】:2019-08-29 20:06:43
【问题描述】:
我正在尝试使用 VBA 宏调用 R 脚本,以根据 excel 工作簿中的变量清理数据。我无法将清理后的数据粘贴回 Excel 工作簿。我可以使用 saveWorkbook 将其保存为 .xlsm 文件,但是一旦打开文件,我所有预设的宏都消失了,只是消失了。有没有办法从 R 中保存 xlsm 以保持宏完整?
作为另一个说明,有没有办法写这个并更新它,以便不需要关闭和重新打开文件?有没有办法让它以与宏相同的方式运行?
wb <- loadWorkbook(file.xlsm)
writeData(wb, sheet = "DataSet", data, startCol = 1, startRow = 2, colNames = FALSE)
saveWorkbook(wb, file = file.xlsm, overwrite = TRUE)
它运行良好,但所有的宏都消失了。文件大小从 806KB 到 27KB
【问题讨论】:
-
指定启用宏的 Excel 工作簿文件格式?我不知道 R 等效项是什么,但在 Excel 类型库中,您想要的是 Workbook.SaveAs 并将
FileFormat参数设置为xlOpenXMLWorkbookMacroEnabled(int 值为 52) -
当我使用函数 saveWorkbook 保存工作簿时,我将其保存为 .xlsm 文件,因此启用了宏。根据网站,此功能只有 3 个输入:rdocumentation.org/packages/openxlsx/versions/4.1.0.1/topics/…,我已经在使用它们了
-
不,它保存为 .xlsm 文件,所以您指定的文件扩展名应该是 - 这并不意味着以正确格式序列化的实际内容。此 API 不提供保存启用宏的工作簿的方法并非不可能。