如何在关闭Excel工作簿后捕捉用户操作

本文关键字:用户 操作 工作簿 Excel | 更新日期: 2023-09-27 17:50:20

当用户试图关闭Excel工作簿时,我想在保存对话框上点击"不保存"按钮,但有未保存的更改。

我的情况是:用户打开excel文件更改文件中的某些内容并单击关闭按钮,excel应用程序将显示"是否要保存更改"对话框,当用户选择否或取消时,我想处理这些情况。我不想在应用程序中切换屏幕并向用户显示我自己的对话框,用户不会对该解决方案感到满意如果有办法的话,请告诉我。

这是我的代码:

_xlsApp = new Excel.Application();
_xlsApp.WorkbookBeforeClose += new Excel.AppEvents_WorkbookBeforeCloseEventHandler(xlsApp_WorkbookBeforeClose);
_xlsApp.WorkbookBeforeSave += new Excel.AppEvents_WorkbookBeforeSaveEventHandler(xlsApp_WorkbookBeforeSave);

如何在关闭Excel工作簿后捕捉用户操作

IMO您需要用自定义事件覆盖默认的保存/不保存更改事件。

保存前事件处理程序中:

  • 使用workbook.Saved属性检查工作簿是否有任何未保存的更改
  • 如果是,则显示一个自定义的有未保存的更改-保存或放弃对话框,并获取用户响应yes/no(本文中的示例(
  • 您总是可以取消保存事件-BeforeSave事件的MSDN文档,其中显示了如何取消
  • 或使用工作簿保存更改。保存方法

这样,决策权就交给了用户(默认情况下,从用户的角度来看没有任何变化(,但您仍然可以在保存工作簿之前或之后执行任何您想做的操作。

如果用户关闭应用程序,excel将首先进入关闭前事件。您有两种选择:-请在此处检查是否有任何更改,并询问用户并保存答案,稍后在保存之前的事件中使用答案-或者跳过此事件-如果有任何未保存的更改,excel将在保存事件之前转到,您可以按照上面所示进行操作;来自MSDN If the workbook has been changed, this event occurs before the user is asked to save changes.