【发布时间】:2021-03-18 23:29:48
【问题描述】:
我的目标是保存并重命名从 .xltm excel 模板创建的文件,而该(临时)文件是用 VBA 打开且之前未保存的。
工作流程如下:
- 用户单击文件夹中的 .xltm Excel 模板文件,打开该 excel 模板的新“副本”(但不是 xltm excel 模板本身)
- 然后用户单击宏按钮将一些数据导入此文件的工作表(例如从 Access)
- 应该保存此文件,并可能根据工作表中包含的数据重命名。
这种情况不同于以下几种情况:
- 复制和重命名简单的 excel 文件 (.xlsx)
- 使用宏 (.xlsm) 复制和重命名 excel 文件
- 复制和重命名未打开的 excel 文件(这将通过“命名为”来完成)
如上所述,我的情况是我想保存 excel 文件,当用户单击文件夹中的 .xltm 文件(带有宏的 excel 模板)并执行一些操作时,该文件创建为新副本此临时文件中的宏。
打开模板的新副本后,我运行以下子程序将这个新副本保存为下载文件夹中名为“Test”的 xlsm.file,但出现 1004 错误:
ActiveWorkbook.SaveAs "C:\Users\USERNAME\Downloads\Test.xlsm"
在某些论坛中,声明在这种情况下不能使用“ActiveWorkbook”,因为运行代码的实际文件作为 tmp.file 存储在 Windows Temp 文件夹中。而此时,它还不是工作簿,因此“活动工作簿”的相对路径不起作用。
非常感谢您的帮助!
【问题讨论】:
-
工作簿中执行保存的代码是否要保存?如果是这样,请尝试
ThisWorkbook而不是ActiveWorkbook -
你试过这个吗:ActiveWorkbook.SaveAs "C:\Users\USERNAME\Downloads\Test", xlOpenXMLWorkbookMacroEnabled ?