摘要
在 Microsoft Excel 中,可以创建一个 Microsoft Visual Basic for Applications (VBA) 宏,以取消在关闭工作簿时出现的“保存更改”提示。 为此,可以指定工作簿 的“已保存” 属性的状态,也可以通过禁止工作簿的所有警报来完成。
详细信息
注意: Microsoft 提供的编程示例仅用于说明,不提供明示或默示担保。 这包括但不限于特定用途的适销性或适用性的隐含保证。 本文假定你熟悉所演示的编程语言以及用于创建和调试过程的工具。 Microsoft 支持工程师可以帮助解释特定过程的功能。 但他们不会修改这些示例以提供附加功能或构造满足你的特定要求的过程。
要准备实现以下任一示例,请首先执行以下步骤:
启动 Excel 并打开工作簿。
按 Alt+F11 启动 Visual Basic 编辑器。
在“插入”菜单上,单击“模块”。
在模块工作表中键入示例宏代码。
按 ALT+F11 返回到 Excel。
在 Microsoft Office Excel 2003 和较低版本的 Excel 中,从“工具”菜单中选择“宏”,然后单击“宏”。
在 Microsoft Office Excel 2007 中,请在“开发工具”选项卡上的“代码”组中单击“宏”。
如果 “开发工具 ”选项卡不可用,请考虑执行以下操作:
a. 单击“ Microsoft Office 按钮”,然后单击“ Excel 选项”。
b. 在“常用”类别中,在使用 Excel 的热门选项下,单击以选择“显示”
“功能区”检查框中的“开发人员”选项卡,然后单击“确定”。选择所需宏,然后单击“运行”。
如果自上次保存工作簿以来对工作簿进行了更改,则 Saved 属性返回值 False 。
您可以使用保留的子例程名称 Auto_Close 指定在关闭工作簿时应运行的宏。 这样,当用户关闭 Excel 中的文档时,可以控制如何处理文档。
示例 1:关闭工作簿而不保存更改
若要强制关闭工作簿并且不保存任何更改,请在工作簿的 Visual Basic 模块中键入以下代码:
子Auto_Close ()
ThisWorkbook.Saved = True
End Sub
当 “已保存 ”属性设置为 True 时,Excel 的响应就像已保存工作簿一样,并且自上次保存以来未发生任何更改。
也可以使用程序的 DisplayAlerts 属性实现同样的目的。 例如,下面的宏将关闭 DisplayAlerts,关闭活动的工作簿并且不保存更改,然后重新打开 DisplayAlerts。
订阅 CloseBook ()
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub
此外,还可以使用 Close 方法的 SaveChanges 参数。
下面的宏将关闭工作簿并且不保存更改:
Sub CloseBook2 ()
ActiveWorkbook.Close savechanges:=False
End Sub
示例 2:关闭工作簿并保存更改
若要强制关闭工作簿并且保存更改,请在工作簿的 Visual Basic 模块中键入以下代码:
子Auto_Close ()
如果 ThisWorkbook.Saved = false,则
ThisWorkbook.Save 结束条件
End Sub
此子过程检查文件 的“保存” 属性是否已设置为 False。 如果是,则说明工作簿自上次保存以来进行过更改,然后将保存这些更改。