基于PPT环境下的VBA计时器设计研究

来源 :中国化工贸易 | 被引量 : 0次 | 上传用户:warewell
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:用PPT制作的课件被广泛应用,在PPT中应用计时器有很多的解决方案。文本使用VBA研究设计了计时器,计时器可以方便的应用于整个PPT环境,时间调节灵活,可以适应更广泛的需求。
  关键词:计时器 VBA 类 模块 宏
  引言
  PPT是使用最广泛的课件制作软件,广泛地应用于各种演讲、教学、比赛中,使用VBA制作倒计时器,这样很好地控制现场时间。
  介面设计
  在PPT中按Alt+F11键进入VBE,打开工程窗口。在VBAProject(演示文稿1)工程中,分别插入2个窗口、1个模块、1个类模块。如图1。
  类1及窗体代码:
  双击“类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(ByVal 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 < Application.Height - Me.Height
  End Sub
  (2)在UserForm2窗体中,设置如图3所示的介面。包括:2个命令按钮、2个标签控件、2个旋转按钮。
  程序代码为:
  Private Sub CommandButton1_Click()
  apply = True : TimeCount = TextBox1.Value * 60 + TextBox2.Value : SaveConfig : Unload Me
  End Sub
  Private Sub CommandButton2_Click()
  Unload Me
  End Sub
  Private Sub SpinButton1_Change()
  TextBox1.Value = SpinButton1.Value
  End Sub
  Private Sub SpinButton2_Change()
  TextBox2.Value = SpinButton2.Value
  End Sub
  Private Sub UserForm_Initialize()
  TextBox1.Value = TimeCount \ 60 : TextBox2.Value = TimeCount Mod 60
  SpinButton1.Value = TimeCount \ 60 : SpinButton2.Value = TimeCount Mod 60
  End Sub
  0 模块1程序代码:
  Option Explicit
  Public AutoApp As New 类1 : Public WshShell, bKey
  Public nTime As Integer, TimerID As Long : Public apply As Boolean
  Public TimeCount As Integer, EndEvent As Integer
  Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
  Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
  Private Declare Function timeGetTime Lib "winmm.dll" () As Long
  Public Sub Delay(ByVal num As Integer) '延时
  Dim t As Long : t = timeGetTime : Do Until timeGetTime - t >= num * 50 '精度
  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.SlideShowWindow.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 Function
  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 = "倒计时"
  '添加第一个菜单项
  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.RegRead("HKEY_CURRENT_USER\pptcountdown\apply")
  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_USER\pptcountdown\apply")
  TimeCount = 900
  End Sub
  Public Sub SaveConfig()
  WshShell.RegWrite "HKEY_CURRENT_USER\pptcountdown\apply", apply, "REG_SZ"
  WshShell.RegWrite "HKEY_CURRENT_USER\pptcountdown\TimeCount", TimeCount, "REG_DWORD"
  End Sub
  Public Sub MenuItem1_Click()
  UserForm2.Show
  End Sub
  一、生成PPT宏文件
  退出VBE并返回到幻灯片中,单击【文件】|【另存为】,在“保存类型”框中选择“PPT 加载宏(*.ppa)”,在“文件名框”为宏取名为:“倒计时”。
  这样就产生了一个文件:“倒计时.ppa”。以后使用时,双击该文件即可启动倒计时宏。您也可以在PPT中,通过单击【工具】|【加载宏】,来添加或删除宏。
  二、启动加裁宏
  将PPT宏安全性调整为中或低,以便能启用宏。然后双击启动“倒计时.ppa”,如果有安全提示,请按“确定”,即可看到“倒计时”菜单项。
  三、注意事项
  要使得ppa加载宏在VBE中可见,在PPT没有启动的情况下,修改注册表:
  在HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\PPT\Options下(10.0为版本值,可以不同)。
  在右边名称窗中右击:新建DWORD值(或修改),命名为“DebugAddins”,双击新建的DebugAddins,出现编辑双字节值(DWORD)的窗口,设置数值数据为1,关闭注册表。
  四、结语
  本文所设计的计时器,其功能还可以进一步扩充,例如加入倒计时提醒、出现位置的设置及提示音乐等功能。如果在出现的计时和设置介面中加入丰富的图片等效果,可以使程序功能更丰富,介面更美观。
  参考文献
  1.Evangelos Petroutsos MASTERRING Microsoft? Visual 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)
其他文献
摘要:辽河西部凹陷沙河街组沉积时期,构造坡折带广泛发育。按照坡折带成因机制可划分为断裂坡折带和挠曲坡折带两种。沿着凹陷短轴方向多级构造坡折带发育,按照所处的位置可分为,凸起边缘坡折带和深洼边缘坡折带。高位砂体的沉积主要受控于凸起边缘坡折带,而低位砂体和高位滑塌浊积砂体的沉积则主要受控于洼陷边缘坡折带。砂体的平面展布形态主要受控于平面上同沉积断裂系的类型。研究区沙河街组沉积时期同沉积断裂系由早期的叉
期刊
摘要:沙一下生物灰岩是王徐庄油田的主力开发层系,为双重介质油藏,由于其层内裂缝发育,一直没有相应的技术对其进行地质建模研究。针对这种状况,应用Petrel 2009地质建模软件,引入蚂蚁追踪技术和DFN裂缝建模技术,实现了对裂缝的追踪和识别,通过建立离散裂缝模型,对裂缝系统从几何形态到其渗流行为的逼真细致的有效描述,最终实现了对双重介质油藏的地质建模工作。王徐庄油田裂缝网格模型建立的成功,对该油田
期刊
摘要:针对泉42断块油井高凝油的油品、原油集输物性差、集输能耗大的特点,开展了单管掺常温水集油工艺参数确定的现场试验。试验研究了采用单管环形掺水简化集油工艺, 在不同的掺水温度条件下,回油进站温度分别为62℃、57℃、50℃时,各集油环集输参数的特点,总结了不同掺水温度条件下,各参数边界条件和各工况稳定运行周期及能耗规律,为油气集输奠定了基础。  关键词:掺水 集输 单管参数试验  1 泉36接转
期刊
摘要:本文主要通过利用压汞曲线及其各项参数对储层进行分类,并与相渗曲线的分类结果进行对比,从而达到判断储层储集性能好坏,为储层预测提供有效信息。  关键词:大湾区块;毛管压力曲线;相渗曲线;储层分类  普光气田大湾区块构造上位于川东断褶带东北段普光气田主体西北部,西与分水岭构造相邻,东与普光西构造相接,下三叠统飞仙关组储层岩性以白云岩为主,主要为鲕粒白云岩,物性好,储集性能好,但储层非均质性强,储
期刊
摘要:在一般油层条件下,石油中所含的蜡处于溶解状态。对于溶有一定石蜡的原油在开采过程中,随着温度压力的降低和气体的析出,溶解的石蜡便以晶体析出。随着温度的进一步降低,石蜡晶体析出量增多,其结晶便长大聚集和沉积在管壁上,即出现所谓的结蜡现象。  关键词:长庆油田 油井 结蜡 治理工艺  1油井结蜡机理  1.1结蜡机理  在一般油层条件下,石油中所含的蜡处于溶解状态。对于溶有一定石蜡的原油在开采过程
期刊
摘要:提液是挖掘抽油井生产潜力的一项常规措施,针对小直径套管井空间受限,无法下大泵提液的难题,工程技术人员从改变抽油泵的联接方式、加长泵筒、配套脱接器等方面对四寸套管泵进行了改进,研制出Φ50-63mm系列四寸套专用抽油泵,解决了四寸套管内大泵提液的难题,满足了胡庆油田小直径套管井提液的的需要,在生产中取得了较好的效果。  关键词:胡庆油田 提液 小直径套管 对策  一、前言  提液措施是一项投入
期刊
摘要:目前,安塞油田集输领域普遍使用的加热炉有蒸汽锅炉、水套炉等。老式加热炉普遍存在着燃烧和传热强度小、效率低、适应性及安全性差等缺点。采用负压真空相变技术的真空相变加热炉,具有高效、节能、安全、全自动、寿命长久等特点,在油田集输系统中具有广泛的应用价值,有替代传统加热炉的趋势。  关键词:真空相变加热炉 油气集输 故障处理  一、真空相变加热炉的结构与原理  真空相变加热炉基本结构由燃烧受热系统
期刊
摘要:本文用极化曲线法和交流阻抗法研究了以烯丙基硫脲作为缓蚀剂对3Cr13不锈钢在25%的硫酸溶液中的缓蚀作用,考查了缓蚀剂浓度对其缓蚀性能的影响。结果表明:开路电位的稳定时间是30min,最佳扫描速度是0.5mV/s,当烯丙基硫脲浓度为0.01mol/L时,缓蚀性能最佳。  关键词:3Cr13不锈钢 25%硫酸 极化曲线 交流阻抗  一、研究意义  金属腐蚀问题遍及国民经济和国防建设各个部门,损
期刊
摘要:针对风城油田SAGD超稠油采出液高温密闭脱水工艺对破乳剂高温脱水性能评价的需求,本文在室内组建了一套SAGD超稠油采出液高温密闭脱水装置,并利用此装置筛选了对路的脱水药剂。室内及现场试验结果证实,所组建的高温密闭脱水装置能够满足室内超稠油脱水评价的需求。图5参4  关键词:高温密闭;脱水装置;SAGD;超稠油;破乳剂;脱水评价  新疆油田风城超稠油是“十二五”新疆油田开发的主力油田和未来重要
期刊
摘要:二甲苯吸附塔装剂时,发现大量格栅锈蚀,若按照标准处理方案执行,将延后装剂进度20天左右,为了不影响装剂工期,对方案进行修改,对酸洗工序进行合理统筹,使格栅酸洗效率由0.5块/每天提高到2.0块/每天,效率为原来的400%,缩短了吸附剂装填工期,使四川石化吸附剂装填工作在同规模的装填工作中装填工期最短,吸附剂装填效率效果最佳。  关键词:吸附塔 格栅 酸洗 效率 吸附剂装填 工期  Abstr
期刊