是否有像 excel 中那样的 presentationclose 选项?[已结束]

Is there a presentationclose option like in excel? [closed]

提问人:Katto Ishimura 提问时间:11/7/2023 更新时间:11/8/2023 访问量:46

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

16天前关闭。

Hwello,

我在 excel 中有一个例程,位于 ThisWorkbook 模块中,它检测“保存”或“关闭”事件,并在执行“保存”或“关闭”之前执行一些命令。

Powerpoint 中有类似的东西吗?

谢谢

VBA 幻灯片

评论

1赞 BigBen 11/7/2023
learn.microsoft.com/en-us/office/vba/api/......用于应用程序级事件。
0赞 FaneDuru 11/7/2023
是的,是的,但不像 Excel 中那么简单/可用......您需要一个类、一个初始值设定项和一种在演示开始时调用它的方法(通常,编写特定的 Called by Ribbon 事件)。由于没有相应的班级就没有活动,因此公开活动也不可用。如果在我到家之前没有人会回答你的问题,我可以尝试在几个小时后回答。SubSubOnLoad
0赞 Katto Ishimura 11/8/2023
对我来说听起来很复杂,谢谢。

答:

2赞 FaneDuru 11/8/2023 #1
  1. 您需要一个能够触发 PowerPoint 事件的类。因此,请在项目中插入一个类模块,将其命名为“clsPPEvents”,并将下一个代码粘贴到其中:
Option Explicit

Public WithEvents App As Application

Private Sub App_PresentationClose(ByVal Pres As Presentation)
  MsgBox "Presentation """ & Pres.Name & """ is closing..."
  'do here whatever you need to do before presentation closing...
End Sub
  1. 请复制标准模块中的下一个代码。它将初始化上述类以触发 PowerPoint 应用程序的事件:
Option Explicit

Public myApp As New clsPPEvents

Sub EnableEvents()
   Set myApp.App = Application
End Sub
  1. EnableEvents演示文稿打开时必须调用 Sub。由于当时未启用 PowerPoint 事件,因此您需要找到一种方法来调用它以初始化类。它可以通过加载项(稍微复杂一些)或使用功能区事件 () (在打开所需的演示文稿时触发)来完成。我将向您展示第二种方式。OnLoad

3.1 复制标准模块中的下一个代码(与之前使用的相同,或另一个):

Public Sub onLoadRibbon(myRibbon As IRibbonUI)
  Debug.Print "Ribbon Loaded" 'just to see that it has been called
  EnableEvents 'initialize the events class
End Sub

保存演示文稿并将其关闭。

3.2 以上代码必须在加载时由 Ribbon 调用。因此,您需要下载“Office RibbonX 编辑器”(从这里。下载 zip 存档,将其内容解压缩到特定文件夹中,然后运行 .要了解如何使用它,请观看以下视频。它显示了如何在 Excel 功能区中使用,但必须以与 PowerPoint 完全相同的方式使用。 上述代码必须在加载期间由 Ribbon 调用。因此,您需要下载“Office RibbonX 编辑器”(从这里。下载 zip 存档,将其内容解压缩到特定文件夹中,然后运行 .要了解如何使用它,请观看以下视频。它显示了如何在 Excel 功能区中使用,但必须以与 PowerPoint 完全相同的方式使用。CustomUIEditor.exeCustomUIEditor.exe

使用它并复制插入的下一个 XML 代码(对于 Office 2010 或更高版本):customUI14.xml

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
onLoad="onLoadRibbon" ></customUI>

或者 Office 2007 中的下一个:customUI.xml

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
onLoad="onLoadRibbon" ></customUI>

插入这两个演示文稿将在高于 2007 的所有 Office 版本(包括 2007 版本)中正常工作。custom UI

按下可检查XML代码是否正确,如果正确,请按按钮。ValidateSave

  1. 现在,打开演示文稿,对它做任何你需要的事情,然后尝试关闭它。 事件将被触发,您将收到消息App_PresentationClose"Presentation " & Presentation Name & " is closing..."

请在测试建议的解决方案后发送一些反馈。

如果有些地方不够清楚,请不要犹豫,专门要求澄清