|
PowerPoint的两个自动运行宏
[内容提要]PowerPoint是款非常优秀的多媒体编著与演示平台,提供了各种各样的功能以满足人们的多种需要,不过有很多高级的功能却深藏在系统中不为人所知。这里把本人挖掘出的OnSlideShowPageChange和OnSlideShowTerminate两个能在放映过程中自动运行的宏介绍给大家,以期抛砖引玉,激发大家对PowerPoint的进一步探究。
宏对于经常使用MS Office的人来说是再熟悉不过的东西了,为了定制或扩展Office的功能我们经常用VBA开发各种各样的宏。自动化运行的宏是在应用程序进行某种操作或处于某种状态时能被激活而自动的执行其中的代码的VBA宏程序块,如Excel中有四个自动执行的宏:Auto_Open、 Auto_Close、 Auto_Activate 和 Auto_Deactivate等。由于这些宏能自动被执行,为编程开发应用程序提供了非常友好的环境。
一、难寻的PowerPoint自动运行宏
Office系统中的主要程序几乎都有内置的能自动运行的宏,可对于PowerPoint,我查看了所能收集到的所有资料,包括微软的官方网站及其Office开发资源网站MSDN上的中英文资料,都说它不具有自动运行的宏,最后又“白度”中国,“Google”世界,再“Yahoo”全球,还是没有找到说PowerPoint有自动运行宏的资料,有的只有说在PowerPoint的Add-In(加载项)插件中有自动化运行的宏Auto_Open和Auto_Close。
作为开发工具,没有内置的自动化运行的宏是肯定不行的,难道初始化程序的运行环境,程序运行中要自动完成某个操作,程序运行结束后环境的清理等等,这些操作都要我们开发一个加载项插件到每个需要运行我们程序的电脑上去安装?这太可怕了,真的像有人所说的PowerPoint不适合用作多媒体课件开发的平台吗?这么易用的PowerPoint就这样被废掉了吗?不,决不。经过本人多方查找和测试,终于发现了两个神秘的宏:OnSlideShowPageChange和OnSlideShowTerminate,它们能在演示文稿开始放映、放映过程中及放映结束时自动运行,实现我们自动化的要求。
二、OnSlideShowPageChange宏的使用
下面我们来研究一下这两个宏的功能与运行的条件。先来看OnSlideShowPageChange宏,我们新建一个演示文稿,并把PowerPoint宏的安全级别设置为启用全部宏,在演示文稿中添加几张幻灯片,为便于测试说明,从第一张幻灯片开始,我们按顺序给它们输入数字编号“1、2、3、4……”,再按Alt+F11快捷键启动VBA编辑器,在其中插入一个模块,向代码窗口中输入如下代码:
Sub OnSlideShowPageChange()
MsgBox "I love you, PowerPoint."
End Sub
点击“保存”按钮,保存文档,文件名如Test.ppt(PowerPoint 2007中为Test.pptm),返回幻灯片编辑视图,按F5键进行放映,我们首先会看到一个显示“I love you, PowerPoint.”的消息框,点击确定后,放映第一张幻灯片,再点击鼠标左键,放映到第二张,也会出现同样的消息框,后面各张的放映的情形也是这样。这说明我们的宏在放映时及放映过程中被正确地执行了,还说明这个宏是在放映时就自动运行,以后只要有幻灯片切换都会被激发而运行。根据它的特性,只要是在幻灯片放映开始时就要完成的任务,或是放映过程中需要不断重复做的处理都可以交给它来完成。同时,这个宏也很适合用来对PowerPoint放映环境进行初始化设置,不过应做一下改进,因为初始化只需要一次,反复做会浪费系统资源,改进后的示例代码如下:
Sub OnSlideShowPageChange()
If ActivePresentation.SlideShowWindow.View.CurrentShowPosition = 1 Then
MsgBox "I love you, PowerPoint."
End If
End Sub
再保存后运行,怎么样,是不是只在放映开始时出现一次消息框,以后幻灯片再切换就看不到消息框了,我们的目的达到了,今后在实际开发中只是放映过程中要反复执行的代码块就放在Sub OnSlideShowPageChange()和End Sub之间,即代替掉“If Then End If”语句块,凡是开始放映时只需运行一次的代码块就放在 If ActivePresentation.SlideShowWindow.View.CurrentShowPosition = 1 Then和End If之间,即把MsgBox "I love you,PowerPoint."语句替换成我们自己的代码块就行了。
三、OnSlideShowTerminate宏的使用
现在我们再来研究一下OnSlideShowTerminate宏的用法,还是用前面建立的PowerPoint实列文档Test.ppt,打开文档后在VBA编辑器窗口中输入下面的代码:
Sub OnSlideShowTerminate()
MsgBox "Good bye, and take care!" "
End Sub
保存后返回PowerPoint幻灯片编辑视图,按F5进行放映,在放映开始出现显示“I love you, PowerPoint.”消息框,这是OnSlideShowPageChange宏的功劳,前面已讲过,点“确定”后继续播放直至结束,我们又会看到一个写着“Good bye, and take care!”的消息框,现在是OnSlideShowTerminate宏在起作用。由此我们可以看出,OnSlideShowTerminate宏只在结束幻灯片放映时被激活发挥作用,用它我们可以处理放映完成后的环境清理工作,只要把我们的相关代码放在Sub OnSlideShowTerminate()和End Sub中间替换掉MsgBox "Good bye, and take care!"语句就OK了。
PowerPoint是一个非常易用的多媒体制作平台,只需要很少的编程就能制作出非常优秀出色的课件,如果再运用好OnSlideShowPageChange和OnSlideShowTerminate这两个在放映时能自动运行的宏,就更能如虎添翼,使我们的课件更专业更完美,使PowerPoint成为老师们手中最强大的多媒体制作利器。(文中的代码在PowerPoint 2000—2007中测试通过。) |
|