Events 演示文稿关闭事件后的PowerPoint

Events 演示文稿关闭事件后的PowerPoint,events,vsto,powerpoint,Events,Vsto,Powerpoint,PowerPoint 2007仅公开一个演示文稿关闭事件(),该事件在演示文稿关闭之前引发 在我正在编写的几段代码中,我需要跟踪打开的演示文稿,从而对其中一个被关闭做出反应 一般来说,PowerPoint提议的活动就足够了。除下列情况外 如果演示文稿关闭时尚未保存,PowerPoint将显示一个对话框,询问用户是否要保存演示文稿。如果用户单击是或否,则一切正常,因为演示文稿最终将关闭。但他也可以选择取消关闭 在本例中,将引发close事件,演示文稿仍然存在,但我的应用程序不知道它 有人能给我一些

PowerPoint 2007仅公开一个演示文稿关闭事件(),该事件在演示文稿关闭之前引发

在我正在编写的几段代码中,我需要跟踪打开的演示文稿,从而对其中一个被关闭做出反应

一般来说,PowerPoint提议的活动就足够了。除下列情况外

如果演示文稿关闭时尚未保存,PowerPoint将显示一个对话框,询问用户是否要保存演示文稿。如果用户单击是或否,则一切正常,因为演示文稿最终将关闭。但他也可以选择取消关闭

在本例中,将引发close事件,演示文稿仍然存在,但我的应用程序不知道它


有人能给我一些解决办法吗?可能是用户单击“取消”后引发了一个事件?

我认为这样做可以:

Private Sub PPTEvent_PresentationClose(ByVal Pres As Presentation)

  Dim x as Long
  with Application.Presentations
  If .Count > 0 Then
    For x = 1 to .Count
      If .Item(x) = Pres Then
         ' the presentation that triggered the event
         ' is still open; user must've canceled
      Else

      End If
    Next
  End if
您可能需要或添加了哪些内容

如果用户在提示下单击“是”保存,然后单击“取消”退出“保存演示文稿”窗口,也可能会出现同样的问题。这仍然使演示文稿在应用程序中保持活动状态

我提出的PowerPoint 2007变通方法():

不会,因为当事件被触发时,演示文稿总是打开的(在关闭事件之前…),谢谢忍者,做得很好!(知道2010年的事件,但缺乏2007年的头脑:-)@JulienV很高兴它帮助了你!如果有效,请接受作为答案。这将有助于其他人找到这一点。实际上仍然存在本地化问题,作为用户界面语言的“是”和“否”更改的快捷方式。还有一个问题是用户触发“另存为”对话框并取消。。。
void Application_PresentationClose(PowerPoint.Presentation presentation)
{
    if (presentation.Saved == MsoTriState.msoFalse)
    {
        MessageBoxResult savePrompt = MessageBox.Show(string.Format("Do you want to save the changes you made to {0}?", presentation.Application.ActiveWindow.Caption), Globals.ThisAddIn.Application.Name, MessageBoxButton.YesNoCancel, MessageBoxImage.Warning, MessageBoxResult.Yes);
        if (savePrompt == MessageBoxResult.Yes)
            System.Windows.Forms.SendKeys.Send("Y"); // trigger default SaveAs prompt
        else if (savePrompt == MessageBoxResult.No)
            System.Windows.Forms.SendKeys.Send("N"); // discard presentation
        else
            System.Windows.Forms.SendKeys.Send("{ESC}"); // disables default SaveAs prompt
    }
}