2016-02-25 71 views
-1

與Visual Studio 2013我針對.NET Framework 4,並創造了單加載項,同時針對Office 2007和Office 2010。我選擇2010的加載項,但它應該在2007年accordind工作此鏈接: 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/Word 2007中加載項功能區 - InternalStartup

我使用的功能區設計(不帶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; 
} 

基本上我捕捉關閉事件,我做了一些在那個事件中我自己的自定義代碼。這工作完全在201​​0年2007年色帶安裝和一些功能的工作原理然而,當我關閉我的文檔「Application_DocumentBeforeClose」關閉事件dosnt被調用Word 2007年有什麼建議?

更新:我改變了我的代碼,但建議行了,當我打開一個文檔錯誤在Word 2007以下失敗 - 「因爲沒有文檔是打開此命令不可用。」

this.Application.ActiveDocument.Saved = false; 
+0

變化在2010年帶製成,2007年不支持。您是使用VSTO功能區設計器創建功能區還是使用功能區XML?如果功能區XML,您使用了哪個命名空間? –

+0

辛迪我使用了絲帶設計器而不是xml。我的代碼存在於WordAdd類中。 – gisWeeper

+0

你不應該把代碼放在InternalStartup中,這是VSTO的代碼。將DocumentBeforeClose初始化放入ThisAddIn_Startup。對不起,我以前沒有看到過,但由於您的標題強調功能區,這就是我正在關注的。你可能想編輯... –

回答

1

看看類似的論壇主題 - Word DocumentBeforeClose not firing。以下是它的說明:

如果我們打開文檔,Word將檢測新文檔是否被修改。如果它是從頭開始的空白文檔,則Word會使用它來直接託管目標文檔。所以在這種情況下,它不被視爲關閉操作。因此,DocumentBeforeClose不會觸發。

+0

我試過,但是當我在Word 2007中運行它,它在拋出一個錯誤:this.Application.ActiveDocument.Saved = FALSE; - '此命令不可用,因爲沒有文檔處於打開狀態。' – gisWeeper

+0

它返回什麼值? –

相關問題