2013-01-07 142 views
1

我創建了一些Office插件,用於跟蹤文檔/演示文稿是否已關閉,然後在關閉文檔/演示文稿之前執行一些自定義代碼。關閉PowerPoint演示文稿

所有這些代碼工作而不會在Word中的任何問題加載項,但在PowerPoint中附加我得到一個

「System.Runtime.InteropServices.COMException(0x80048240): 演示文稿(未知成員):請求無效,此操作 無法在此事件處理程序中執行。「 - 關閉 PowerPoint應用程序時出錯。正在調用的方法是 presentation.Close()。如果它被稱爲功能區事件處理程序的一部分

的方法工作正常,但如果它是由任何應用程序 - 埃文斯(PresentationClosePresentationBeforeClosePresentationCloseFinal)的所謂的失敗做presentation.Close()

如前所述,我在Word加載項中有相同的代碼,但沒有此問題。我知道兩個產品中的事件處理是不同的,但我仍然無法弄清楚在PowerPoint中關閉應用程序或關閉演示文稿時爲什麼會出現問題。

希望有人能有一些很好的投入。

+0

您是否找到了解決此問題的解決方法? –

回答

0

我遇到了非常相似的東西;爲了解決PPT中的一些錯誤或其他問題,我需要關閉然後重新打開當前的演示文稿,但無法從事件處理程序中關閉演示文稿(我想,這是合理的,因爲它仍然處理屬於演示文稿的事件觸發它)。

我通過讓事件處理程序無模式地加載表單來解決這個問題。這允許事件處理程序中的代碼繼續處理事件處理程序的End Sub,因此您不再處於事件處理程序中。

表單中的初始化代碼將關閉當前文檔並卸載表單。

沒有必要顯示錶單,所以用戶從來沒有看到任何這個。

0

我嘗試了很多方法,但沒有任何效果。 所以它更好地搜索powerpoint過程並通過代碼殺死它。 希望這是你正在尋找。

Process[] pros = Process.GetProcesses(); 
    for (int i = 0; i < pros.Count(); i++) 
    { 
    if (pros[i].ProcessName.ToLower().Contains("powerpnt")) 
     { 
      pros[i].Kill(); 
     } 
    } 
相關問題