1、基于 PPT 环境下的 VBA 计时器设计研究摘要:用 PPT 制作的课件被广泛应用,在 PPT 中应用计时器有很多的解决方案。文本使用 VBA 研究设计了计时器,计时器可以方便的应用于整个 PPT 环境,时间调节灵活,可以适应更广泛的需求。 关键词:计时器 VBA 类 模块 宏 引言 PPT 是使用最广泛的课件制作软件,广泛地应用于各种演讲、教学、比赛中,使用 VBA 制作倒计时器,这样很好地控制现场时间。 介面设计 在 PPT 中按 Alt+F11 键进入 VBE,打开工程窗口。在VBAProject(演示文稿 1)工程中,分别插入 2 个窗口、1 个模块、1 个类模块。如图 1。 类 1
2、 及窗体代码: 双击“类 1”,然后在打开的类代码窗口中输入下面的程序: Public WithEvents App As Application Private Sub App_SlideShowBegin(ByVal Wn As SlideShowWindow) If ActivePresentation.SlideShowWindow.View.CurrentShowPosition = 1 And apply Then UserForm1.Show 0 : StartTimer 1000 : End If : End Sub Private Sub App_SlideShowEnd(B
3、yVal Pres As Presentation) StopTimer (TimerID) : Unload UserForm1 End Sub (1)对 UserForm1 窗口,设置好相关窗体属性,如图 2 所示。双击标签控件,输入程序代码: Private Sub UserForm_Activate() Rem 右下角 : Me.Left = Application.Width - Me.Width : Me.Top = Application.Height : Do Me.Top = Me.Top ? 2 : Delay 1: Loop Until Me.Top = num * 50
4、 精度 DoEvents : Loop End Sub Private Sub TimerProc(ByVal lHwnd As Long, ByVal lMsg As Long, ByVal lTimerId As Long, ByVal lTime As Long) UserForm1.Label1 = Right(“0“ & nTime 60, 2) & “:“ & Right(“0“ & nTime Mod 60, 2) nTime = nTime ? 1 : If nTime 0 Then : StopTimer TimerID ActivePresentation.SlideSho
5、wWindow.View.Last ActivePresentation.SlideShowWindow.View.Next : End If End Sub Public Sub StartTimer (minutes As Long) nTime = TimeCount : TimerID = SetTimer(0, 0, lMinute, AddressOf TimerProc) End Sub Public Function StopTimer(lTimerId As Long) As Long StopTimer = KillTimer(0, lTimerId) End Functi
6、on Sub Auto_Open() Dim NewMenu As CommandBarPopup Dim MenuItem1 As CommandBarControl 添加新菜单至最后 On Error Resume Next 如果菜单已存在,则删除该菜单 CommandBars(“Menu Bar“).Controls(“倒计时“).Delete Set NewMenu = CommandBars(“Menu Bar“).Controls.Add(Type:=msoControlPopup, Temporary:=True) NewMenu.Caption = “倒计时“ 添加第一个菜单项
7、 Set MenuItem1 =NewMenu.Controls.Add(Type:=msoControlButton) With MenuItem1 .Caption = “设置.“ : .FaceId = 1 : .OnAction = “MenuItem1_Click“ End With Set AutoApp.App = Application : Init : End Sub Private Sub Init() Set WshShell = CreateObject(“WSCRIPT.SHELL“) : On Error Resume Next apply = WshShell.R
8、egRead(“HKEY_CURRENT_USERpptcountdownapply“) If Err.Number 0 Then 如果没有发现值,则创建 DefaultValue : Else : GetConfigValue : End If End Sub Public Sub DefaultValue() apply = True : TimeCount = 900 默认倒计时间 15 分钟 SaveConfig End Sub Private Sub GetConfigValue() apply = WshShell.RegRead(“HKEY_CURRENT_USERpptcoun
9、tdownapply“) TimeCount = 900 End Sub Public Sub SaveConfig() WshShell.RegWrite “HKEY_CURRENT_USERpptcountdownapply“, apply, “REG_SZ“ WshShell.RegWrite “HKEY_CURRENT_USERpptcountdownTimeCount“, TimeCount, “REG_DWORD“ End Sub Public Sub MenuItem1_Click() UserForm2.Show End Sub 一、生成 PPT 宏文件 退出 VBE 并返回到
10、幻灯片中,单击【文件】|【另存为】 ,在“保存类型”框中选择“PPT 加载宏(*.ppa) ”,在“文件名框”为宏取名为:“倒计时” 。 这样就产生了一个文件:“倒计时.ppa” 。以后使用时,双击该文件即可启动倒计时宏。您也可以在 PPT 中,通过单击【工具】|【加载宏】 ,来添加或删除宏。 二、启动加裁宏 将 PPT 宏安全性调整为中或低,以便能启用宏。然后双击启动“倒计时.ppa” ,如果有安全提示,请按“确定” ,即可看到“倒计时”菜单项。 三、注意事项 要使得 ppa 加载宏在 VBE 中可见,在 PPT 没有启动的情况下,修改注册表: 在HKEY_CURRENT_USERSoftw
11、areMicrosoftOffice10.0PPTOptions 下(10.0 为版本值,可以不同) 。 在右边名称窗中右击:新建 DWORD 值(或修改) ,命名为“DebugAddins”,双击新建的 DebugAddins,出现编辑双字节值(DWORD)的窗口,设置数值数据为 1,关闭注册表。 四、结语 本文所设计的计时器,其功能还可以进一步扩充,例如加入倒计时提醒、出现位置的设置及提示音乐等功能。如果在出现的计时和设置介面中加入丰富的图片等效果,可以使程序功能更丰富,介面更美观。 参考文献 1.Evangelos Petroutsos MASTERRING Microsoft? Vis
12、ual Basic 2008, Copyright ? 2008 by Wiley Publishing, Inc., Indiana Published simultaneously in Canada, ISBN: 978-4701-8742-5 2.(美) (K.盖茨)Ken Getz, (美) (M.吉尔伯特)Mike Gilbert 著;邱仲潘等译. VBA 高级开发指南. 3.Anderson T. Office 2003 programming : real world applications.:Computing Reviews,2005 May 24 作者简介:孙传庆(1964?) ,男,山东章丘人,教授,主要从事计算机教学应用及其研究。省内大专院校科研项目:2013-JY-41、2013-JY-/24)