簡體   English   中英

關閉PowerPoint演示文稿

[英]Closing a powerpoint presentation

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

所有這些代碼都可以在Word加載項中正常運行,但是在PowerPoint加載項中

“ System.Runtime.InteropServices.COMException(0x80048240):表示(未知成員):無效的請求。無法在此事件處理程序中執行此操作。”-關閉PowerPoint應用程序時出錯。 被調用的方法是presentation.Close()。

如果該方法作為功能區事件處理程序的一部分被調用,則該方法工作正常,但是如果由任何Application-evens( PresentationClosePresentationBeforeClosePresentationCloseFinal )調用,則該方法將無法執行presentation.Close()

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

希望有人能提供一些好的意見。

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

我通過讓事件處理程序無模式加載表單來解決此問題。 這樣一來,事件處理程序中的代碼就可以繼續到事件處理程序的End Sub,因此您不再需要使用事件處理程序。

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

無需顯示表單,因此用戶永遠不會看到任何表單。

我嘗試了很多方法,但是沒有任何效果。 因此,最好搜索powerpoint進程並通過代碼將其殺死。 希望這就是您想要的。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM