VBA Excel 备份:通过 VBA 以新名称保存当前工作簿的副本,保留 VBA 脚本,无提示

Posted

技术标签:

【中文标题】VBA Excel 备份:通过 VBA 以新名称保存当前工作簿的副本,保留 VBA 脚本,无提示【英文标题】:VBA Excel Backup: Save copy of current workbook via VBA under a new name, keep VBA scripts, no prompt 【发布时间】:2013-04-04 11:38:11 【问题描述】:

我需要制作一个 VBA 脚本,它可以获取当前工作簿的完整副本并将其保存为新名称。

它需要是包含 VBA 脚本和所有内容的完整副本。

可能不会提示用户输入任何内容 - 新文件名(和位置)将由代码提供。

【问题讨论】:

.SaveCopyAs? msdn.microsoft.com/en-us/library/office/ff835014.aspx 非常简单,并且完全支持 Excel 宏记录器。请记住使用另存为并将文件扩展名设置为“.xlsm”... 【参考方案1】:

这样就足够了吗?

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\Data.xlsm"
Application.DisplayAlerts = True

【讨论】:

当结合@Siddharth Rout 和 roger_rowland 我得到了一个工作代码。谢谢!【参考方案2】:

试试这个:

Activeworkbook.SaveCopyAs "C:\Data.xlsm"

【讨论】:

欢迎来到 ***!尽管此答案可能是正确且有用的,但如果您随附一些解释以解释它如何帮助解决问题,则最好。如果有更改(可能不相关)导致它停止工作并且用户需要了解它曾经是如何工作的,这在未来变得特别有用。【参考方案3】:

我注意到,至少对于 Excel 2013 ActiveWorkbook.SaveAs Filename:="C:\Data.xlsm 可能无法正常工作,因为我说 excel 无法保存为文件类型 xlsm。

但是,我确实找到了适合自己的解决方法,并想在此处添加它作为可能遇到相同问题的其他人的参考。

如果您在代码后添加, FileFormat:=52,它将能够保存为xlsm 格式。

所以这对我有用:

ActiveWorkbook.SaveAs Filename:="C:\Data.xlsm, FileFormat:=52"

编码愉快!

【讨论】:

以上是关于VBA Excel 备份:通过 VBA 以新名称保存当前工作簿的副本,保留 VBA 脚本,无提示的主要内容,如果未能解决你的问题,请参考以下文章

[Excel VBA] Shape.Type属性名称及对应值列表

使用 VBA 保存和关闭办公程序(word、excel、access、outlook)以进行备份

VBA 无法打开包含动态名称的备份文件

ACCESS中用VBA如何导入当前目录内的指定EXCEL

使用 VBA for Excel 在 UDF 中输入的名称无效

EXCEL VBA 事件的问题。