1

所以我发现 PowerPoint 2007 确实支持应用程序级别的事件处理程序。例如Application.NewPresentation甚至Application.AfterNewPresentation

它在这里描述http://msdn.microsoft.com/en-us/library/ff745073.aspx

但真正的问题是,我该如何使用这些?我在哪里使用它们?告诉你我的场景,我想要的是在几个文本框中插入动态文本。我有执行此操作的宏代码,它完全按照我的意愿工作。但是,一旦从 potm 模板创建了新的演示文稿,我就需要触发宏。并且只在那个事件上。就像在 Word 2007 中一样。

我从哪说起呢?我试图创建一个看起来像这样的子并将其保存为 potm 文件并基于该模板打开一个新的演示文稿。什么也没发生。

Private Sub App_NewPresentation(ByVal Pres As Presentation)
    MsgBox "Running!"
End Sub

编辑:可以使用 XML 编辑器打开任何 Office 2007 文件。我使用 Microsoft Office 的自定义 UI 编辑器,并按照此处提供的指南添加 Office 2007 自定义 UI.XML 部分:http: //www.pptalchemy.co.uk/PowerPoint_Auto_Open_Code.html

但是当 PowerPoint 基于该模板创建新演示文稿时,我遇到了问题。打开模板本身就可以了。事件处理程序在那里,代码运行良好。但是基于它的新演示文稿?没办法,处理程序也在那里。但它说它找不到宏。即使宏也在新的演示文稿中,因为我可以打开 Visual Basic 编辑器并找到宏然后运行它。只是汽车零件似乎没有按应有的方式工作。

4

2 回答 2

2

在 PowerPoint VBA 中创建自动宏的唯一方法是将文件作为加载项(.ppa 或 .ppam - 而不是 .pptx/.pptm/.potm/等)。创建它的方法是:

  1. 创建一个类模块。在顶部(在 any 之后Option XXX),放置 Public WithEvents App As Application然后将您的例程放在其下方。
  2. 创建任何名称的模块并放入:

    Dim X As New Class1
    Sub AutoOpen()
        Set X.App = Application
        ''# Code to create new presentation
    End Sub
    

同样,这不适用于您对 .potm 的要求。您可以考虑的另一种方法已被折旧,但它仍然有效,即创建向导文件。

于 2010-09-16T16:46:12.707 回答
2

演示文稿中创建的宏无法运行,因为 auto_open 宏仅适用于插件。根据您的操作方式,您必须重新加载功能区才能在要运行的新演示文稿中启动该事件。

于 2010-09-18T06:56:16.560 回答