officeba > 单独文章


禁止PowerPoint2007中不安全的ActiveX控件方法

禁止PowerPoint2007中不安全的ActiveX控件方法,就是到OnSlideShowPageChange宏,就可以达到我所需的初始化功能了。一、难寻的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中测试通过。)

powerpoint没有类似Excel的Open事件,实际上整个演示文稿和各页的幻灯片都没有事件(好像是这样),一般替代的办法是,在封面上添加一个“开始”按钮,或者做个隐形的按钮,把所有初始化过程写入“开始”按钮中。


声明:欢迎各大网站转载本站文章,还请保留一条能直接指向本站的超级链接,谢谢!

时间:2010-09-08 09:37:15,点击:65824


【OfficeBa论坛】:阅读本文时遇到了什么问题,可以到论坛进行交流!Excel专家邮件:342327115@qq.com(大家在Excel使用中遇到什么问题,可以咨询此邮箱)。

【声明】:以上文章或资料除注明为Office自创或编辑整理外,均为各方收集或网友推荐所得。其中摘录的内容以共享、研究为目的,不存在任何商业考虑。如有任何异议,请与本站联系,本站确认后将立即撤下。谢谢您的支持与理解!


相关评论

我要评论

评论内容