在 Excel 中关闭工作簿时出现“如何取消保存更改”提示

应用对象
Excel 2007

摘要

在 Microsoft Excel 中,可以创建一个Microsoft Visual Basic for Applications (VBA) 宏,该宏在关闭工作簿时禁止显示“保存更改”提示。 可以通过指定工作簿 保存 属性的状态或取消工作簿的所有警报来完成此操作。

详细信息

注意: Microsoft提供编程示例仅供说明使用,不提供明示或默示保证。 这包括但不限于特定用途的适销性或适用性的隐含保证。 本文假定你熟悉所演示的编程语言以及用于创建和调试过程的工具。 Microsoft 支持工程师可以帮助解释特定过程的功能。 但他们不会修改这些示例以提供附加功能或构造满足你的特定要求的过程。 

若要准备实现以下任一示例,请先执行以下步骤:

  1. 启动 Excel 并打开工作簿。

  2. 按 Alt+F11 启动 Visual Basic 编辑器。

  3. 在“插入”菜单上,单击“模块”

  4. 在模块工作表中键入示例宏代码。

  5. 按 ALT+F11 返回到 Excel。

  6. 在 Microsoft Office Excel 2003 和早期版本的 Excel 中,从“工具”菜单中选择“”,然后单击“”。

    在 Microsoft Office Excel 2007 中,请在“开发工具”选项卡上的“代码”组中单击“宏”

    如果“ 开发工具 ”选项卡不可用,请考虑执行以下操作:

        a. 单击 “Microsoft Office 按钮”,然后单击“ Excel 选项”。

        b. 在 “常用 ”类别的“ 使用 Excel 的顶部选项”下,单击以选择“ 显示”
            “功能区
    检查”框中的“开发人员”选项卡,然后单击“确定”。

  7. 选择所需宏,然后单击“运行”

如果自上次保存以来对工作簿进行了更改, 则 Saved 属性返回值 False

可以使用保留的子例程名称 Auto_Close 指定应在工作簿关闭时运行的宏。 执行此操作时,可以控制当用户在 Excel 中关闭文档时文档的处理方式。
 

示例 1:在不保存更改的情况下关闭工作簿

若要强制关闭工作簿并且不保存任何更改,请在工作簿的 Visual Basic 模块中键入以下代码:
 

子Auto_Close ()

ThisWorkbook.Saved = True

End Sub

Saved 属性设置为 True 时,Excel 会做出响应,就像工作簿已保存一样,并且自上次保存以来未发生任何更改。

也可以使用程序的 DisplayAlerts 属性实现同样的目的。 例如,下面的宏将关闭 DisplayAlerts,关闭活动的工作簿并且不保存更改,然后重新打开 DisplayAlerts。
 

Sub 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

End Sub

此子过程检查文件 保存 属性是否已设置为 False。 如果是,则说明工作簿自上次保存以来进行过更改,然后将保存这些更改。