所以我发现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编辑器并找到宏然后运行它。它只是汽车配件似乎没有像它应该的那样工作。
答案 0 :(得分:2)
在PowerPoint VBA中创建自动宏的唯一方法是将您的文件作为加载项(.ppa或.ppam - 而不是.pptx / .pptm / .potm / etc) 。创建它的方法是:
Option XXX
之后),放
Public WithEvents App As
Application
然后把你的
以上常规。创建任何名称的模块并放置:
Dim X As New Class1
Sub AutoOpen()
Set X.App = Application
''# Code to create new presentation
End Sub
同样,这不符合您对.potm的要求。您可以考虑的另一种方法已被折旧,但它仍然有效,即创建一个向导文件。
答案 1 :(得分:2)
创建的演示文稿中的宏无法运行,因为auto_open宏仅适用于插件。根据您的方式,您必须重新加载功能区才能在您想要运行的新演示文稿中启动该事件。