关闭PowerPoint演示文稿

问题描述:

我创建了一些Office插件,用于跟踪文档/演示文稿是否已关闭,然后在关闭文档/演示文稿之前执行一些自定义代码。关闭PowerPoint演示文稿

所有这些代码工作而不会在Word中的任何问题加载项,但在PowerPoint中附加我得到一个

“System.Runtime.InteropServices.COMException(0x80048240): 演示文稿(未知成员):请求无效,此操作 无法在此事件处理程序中执行。“ - 关闭 PowerPoint应用程序时出错。正在调用的方法是 presentation.Close()。如果它被称为功能区事件处理程序的一部分

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

如前所述,我在Word加载项中有相同的代码,但没有此问题。我知道两个产品中的事件处理是不同的,但我仍然无法弄清楚在PowerPoint中关闭应用程序或关闭演示文稿时为什么会出现问题。

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

+0

您是否找到了解决此问题的解决方法? –

我遇到了非常相似的东西;为了解决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(); 
     } 
    }