0

使用 Visual Studio 2013,我以 .NET Framework 4 为目标,并创建了一个同时针对 Office 2007 和 Office 2010 的加载项。我选择了一个 2010 加载项,但它应该在 2007 年根据此链接工作: https://blogs。 msdn.microsoft.com/vsto/2010/06/04/creating-an-add-in-for-office-2007-and-office-2010-that-lights-up-on-office-2010-mclean-schofield/

我使用了功能区设计器(不是功能区 xml)在我的 AddInin 启动方法中,我有以下内容:

private void InternalStartup()
{
  this.Startup += new System.EventHandler(ThisAddIn_Startup);
  this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
  ((Word.ApplicationEvents4_Event)this.Application).NewDocument += new Microsoft.Office.Interop.Word.ApplicationEvents4_NewDocumentEventHandler(Application_NewDocument);
  this.Application.DocumentBeforeClose += new Word.ApplicationEvents4_DocumentBeforeCloseEventHandler(Application_DocumentBeforeClose);

//THIS LINE FAILS IN Word 2007 but not in Word 2010
this.Application.ActiveDocument.Saved = false;
}

基本上我正在捕获关闭事件,并在该事件中执行一些我自己的自定义代码。这在 2010 年完美运行。在 2007 年,功能区安装并且某些功能有效,但是当我关闭文档时,我的“Application_DocumentBeforeClose”关闭事件在 Word 2007 中被调用。有什么建议吗?

更新:我按照建议更改了我的代码,但是当我打开带有错误的文档时,以下行在 Word 2007 中失败 - “此命令不可用,因为没有打开文档。”

this.Application.ActiveDocument.Saved = false;
4

1 回答 1

1

看看类似的论坛主题 - Word DocumentBeforeClose 未触发。这是它所说的:

如果我们打开一个文档,Word 会检测新文档是否被修改。如果是从头开始的空白文档,Word 直接使用它来承载目标文档。所以在这种情况下,它不被视为关闭操作。因此, DocumentBeforeClose 不会触发。

于 2016-02-25T20:39:52.000 回答