关闭特定Excel文档时不提示,不保存,不影响其他打开的工作簿

我开发的某个Excel程序(xlsm)开启时会执行某些运算,查看时表格也会发生重算或变化,但我不希望关闭时系统进行提示,也不希望文档保存这些变化。

可以利用Workbook_BeforeClose过程实现上述目的。

首先打开VBE,在左侧VBA工程管理器中打开Microsoft Excel 对象,打开ThisWorkbook对象,在右侧代码输入窗口上方选择Workbook对象,再选择BeforeClose过程。

然后输入如下代码,即可实现上述目的。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.EnableEvents = False
If Workbooks.Count = 1 Then
Application.DisplayAlerts = False
Application.Quit
Else
ThisWorkbook.Saved = True
End If
Application.EnableEvents = True
End Sub

image

如果只打开了这一个工作簿,需要配合quit方法才能彻底退出Excel程序,否则会剩余一个无任何打开工作簿的Excel程序。
而如果有多个工作簿打开时,我们其实只想关闭这个工作簿,并不想一并关闭其他工作簿(也不知道其他工作簿是否需要保存),此时需要先判断,到底打开了多少个工作簿。

PS:无意中发现,如果一个Excel文档中只有一个按钮控件,该控件设置了点击时执行某个过程,该过程的执行并不会修改Excel。
但不同版本的Excel对点击按钮的处理似乎不同,其中2010版本点击按钮后,不改变Workbook.Saved的属性,仍视为无改动,而365版本则会视为改变(似乎是控件的位置或大小发生了变化?),关闭工作簿时就会弹出是否保存的提示。

posted @ 2022-06-08 20:55  cnblog_mo  阅读(1730)  评论(0编辑  收藏  举报