取消保存时引发 DocumentBeforeSaveEventHandler 事件

DocumentBeforeSaveEventHandler event raised when save has been dismissed

在为 Office 编写加载项时,我不得不为 DocumentBeforeSave 事件定义一个事件处理程序。

除一个异常外,此处理程序工作正常。 此异常来自以下内容:

  1. 我打开一个 word 文档并编辑一些文本。
  2. 我点击关闭按钮。
  3. Word 询问我是否要 savedon't savecancel
  4. 我选择don't save.

按照这些步骤,office 仍然强制我进入 DocumentBeforeSave 事件。无法确定用户是否打算取消保存。

有没有办法检查用户是否选择了保存,如果是,怎么办? 到目前为止,MSDN 和其他来源都是空的。

注意:在 office 2013 及更高版本中,这应该由 Doc.IsInAutosave 检查,遗憾的是,此功能在 office 2007 和 office 2010 中不存在。

根据我的假设,根据你的问题,你想要 运行 一些代码仅在文档实际 保存的情况下。

一个常见的解决方案是拦截实际的保存命令,而不是为 DocumentBeforeSave 事件注册事件处理程序(如您所述,如果实际保存操作从未发生,也会触发该事件) .

我的回答 here 中描述了这是如何完成的。请注意,您必须在功能区 XML 中定义自定义保存命令,然后将保存期间应 运行 的代码放入相应的功能区回调函数中。