如果未进行任何更改,工作簿将在关闭时提示更改

时间:2018-11-22 00:28:19

标签: excel vba excel-vba activex

我有一个运行某些ActiveX组件的Excel文件。缺点是每次关闭文件时都要求保存,即使我没有进行任何更改也是如此。 我尝试将以下代码添加到ThisWorkbook对象:

Private Sub Workbook_Open()
    ActiveWorkbook.Saved = True
End Sub

但是,这似乎不起作用。当我尝试关闭文件而不进行更改时,它仍然要求我保存文件。

有帮助吗?

1 个答案:

答案 0 :(得分:0)

啊,是的,我不得不亲自处理这个问题。由于这些组件在打开工作簿之后(以及您的Workbook_Open()事件之后)运行,因此您需要在关闭工作簿时运行代码

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    ThisWorkbook.Saved = True

End Sub

应放置在ThisWorkbook代码模块中。


为了避免在实际更新时意外地不保存工作簿,您可以尝试设置自己的全局变量标志-该标志应位于标准模块中并具有Public范围。之后,当您实际更改工作簿中的任何内容时,可以使用Workbook_SheetChange事件来设置此标志:

标准模块:添加发布标志

Public bPromptSave as Boolean

工作簿模块:事件处理程序

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    bPromptSave = True

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    if not bPromptSave then ThisWorkbook.Saved = True

End Sub