馬致明,艾克拉木·牙合甫,楊婷婷
(1.新疆師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,新疆烏魯木齊830054;2.新疆師范大學(xué)學(xué)生處,新疆烏魯木齊830054)
利用VBA讓PPT具有遙控倒計(jì)時(shí)及電子打鈴功能
馬致明1,艾克拉木·牙合甫2,楊婷婷1
(1.新疆師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,新疆烏魯木齊830054;2.新疆師范大學(xué)學(xué)生處,新疆烏魯木齊830054)
在剖析PowerPoint VBA編程方法的基礎(chǔ)上,探討如何利用VBA編程讓PPT具有遙控倒計(jì)時(shí)及電子打鈴功能,文中詳細(xì)介紹了其制作過(guò)程,并給出了通用性很好的實(shí)例程序全代碼。
VBA編程;倒計(jì)時(shí);電子打鈴;遙控;PPT演示文稿;模擬鐘聲
PowerPoint由于其簡(jiǎn)單易用、操作方便、通用性好等優(yōu)點(diǎn),成為學(xué)校和企事業(yè)單位使用頻率最高的軟件之一。除了多媒體教學(xué)這一主戰(zhàn)場(chǎng)以外,PowerPoint在演講比賽、論文答辯、競(jìng)聘述職、工作匯報(bào)、評(píng)獎(jiǎng)申報(bào)等一系列活動(dòng)中應(yīng)用非常廣泛,并常常被用來(lái)與投影儀搭配在會(huì)場(chǎng)上呈現(xiàn)會(huì)議主題、營(yíng)造會(huì)議氣氛等。在這些活動(dòng)中通常要求主講者在限定的時(shí)間內(nèi)完成陳述,但主辦者卻常常為倒計(jì)時(shí)犯愁:大屏幕上用計(jì)算機(jī)展示著主題,而計(jì)時(shí)卻用很原始、很笨的手段進(jìn)行協(xié)助。如果在大屏幕上呈現(xiàn)會(huì)議主題的同時(shí),給主講者和聽眾一個(gè)倒計(jì)時(shí)的界面,到規(guī)定的時(shí)間后自動(dòng)打鈴和提示,其效果及會(huì)場(chǎng)氛圍肯定是截然不同的。即使大屏幕因內(nèi)容展示而被主講者占用,在會(huì)場(chǎng)前方的某個(gè)位置放個(gè)筆記本電腦進(jìn)行遙控倒計(jì)時(shí)和打鈴,其效果也是非同一般的。
為了使PPT具備上述強(qiáng)大的功能,必須借助它所附帶的編程工具VBA對(duì)演示文稿進(jìn)行二次開發(fā)。關(guān)于VBA概述很多文章中均有介紹,在此不再贅述。
1.設(shè)計(jì)思路
在PPT演示文稿中用2張幻燈片來(lái)完成有關(guān)功能,其中第1張用來(lái)設(shè)定有關(guān)倒計(jì)時(shí)及打鈴的參數(shù),主要有倒計(jì)時(shí)的時(shí)長(zhǎng)、打鈴的次數(shù)、打鈴的時(shí)機(jī)等,為此需要在此幻燈片中通過(guò)控件工具箱添加文本框、選項(xiàng)按鈕、命令按鈕等控件;第2張幻燈片是主界面,用來(lái)呈現(xiàn)會(huì)議標(biāo)題、倒計(jì)時(shí)的數(shù)字時(shí)鐘、到達(dá)設(shè)定時(shí)長(zhǎng)后的提示以及打鈴,為此也需要在此幻燈片中通過(guò)控件工具箱添加命令按鈕和復(fù)選按鈕等控件,至于數(shù)字時(shí)鐘則用PPT中的水平文本框進(jìn)行呈現(xiàn),這樣便于用戶靈活設(shè)置其格式與位置,以便與標(biāo)題和背景能完美地組合和搭配。
2.關(guān)鍵技術(shù)
(1)計(jì)時(shí)功能的實(shí)現(xiàn)
通常動(dòng)態(tài)效果及計(jì)時(shí)功能的實(shí)現(xiàn)離不開定時(shí)器控件,但VBA不支持該控件。雖然API函數(shù)SetTimer ()與KillTimer()可以彌補(bǔ)這一缺陷,但需要在標(biāo)準(zhǔn)模塊中聲明這兩個(gè)煩瑣的API函數(shù),并編寫相應(yīng)的定時(shí)器事件處理子程序,使用起來(lái)非常麻煩。
通過(guò)探索筆者找到了解決該問(wèn)題的一個(gè)簡(jiǎn)潔方法,即利用VBA自帶的Timer函數(shù)。此函數(shù)返回的是從子夜開始的秒數(shù),測(cè)出兩個(gè)不同時(shí)刻的Timer值即可得經(jīng)歷的秒數(shù)。本例中在計(jì)時(shí)一開始就記錄下初始時(shí)刻:T0=Timer,此后在循環(huán)中不斷測(cè)出當(dāng)前時(shí)刻的Timer值,當(dāng)Timer-T0≤TotalTime(限定的時(shí)長(zhǎng))時(shí)就顯示還剩的時(shí)間T=TotalTime-(Timer-T0),當(dāng)T到達(dá)設(shè)定的打鈴時(shí)間時(shí),進(jìn)行文字提示并調(diào)用打鈴子程序發(fā)出指定次數(shù)的模擬鐘聲。
在循環(huán)中一定要用一個(gè)單獨(dú)的DoEvents語(yǔ)句,以便隨時(shí)將控制權(quán)交給系統(tǒng),以顧及系統(tǒng)的其它任務(wù)或請(qǐng)求。
(2)模擬鐘聲的奏出
為了增強(qiáng)效果,并減少對(duì)音效文件的依賴,本文通過(guò)調(diào)用Midi函數(shù)奏出模擬鐘聲。Midi是樂器數(shù)字接口的英文縮寫,計(jì)算機(jī)的聲卡中包含一個(gè)與Midi兼容的合成器,在程序中可通過(guò)調(diào)用與Midi相關(guān)的API函數(shù)打開或關(guān)閉Midi端口、向Midi端口發(fā)送消息并產(chǎn)生相應(yīng)的音效。其中用于打開Midi端口的是MidiOutOpen()函數(shù),其第一個(gè)參數(shù)可返回已打開的端口號(hào);用于關(guān)閉Midi端口的是MidiOutClose()函數(shù),其參數(shù)就是要關(guān)閉的端口號(hào);用于傳遞Midi輸出消息的是MidiOutShortMsg()函數(shù),其第1個(gè)參數(shù)用于指定端口號(hào),第2個(gè)參數(shù)通常是一個(gè)十六進(jìn)制的整數(shù),直接決定音效的內(nèi)容,若選用&H7F2890這個(gè)值可以模擬出類似鐘聲的效果。值得一提的是,每個(gè)音符發(fā)出后必須延遲一段時(shí)間,具體做法還是用Timer函數(shù)進(jìn)行時(shí)間控制,有關(guān)用法請(qǐng)參照下文中的制作實(shí)例。
(3)對(duì)象名稱的確定
宏代碼中不可避免地要引用有關(guān)控件或?qū)ο蟮拿Q,但是只有從“控件工具箱”中添加的控件才能在屬性和代碼窗口中查到其名稱,對(duì)于從其它菜單或工具欄中插入的文本框、自選圖形等對(duì)象其名稱便無(wú)從得知;本文中用于顯示數(shù)字時(shí)鐘的水平文本框就屬這類,獲取其名稱的唯一方法是針對(duì)這些對(duì)象錄制一段臨時(shí)宏,然后在宏代碼中去查找。具體操作過(guò)程如下:
①將對(duì)象添加至幻燈片,然后打開“工具/宏”菜單中的“錄制新宏”對(duì)話框,使用默認(rèn)宏名并單擊“確定”,此時(shí)會(huì)出現(xiàn)一個(gè)“停止錄制”的浮動(dòng)工具欄,表明已進(jìn)入宏錄制狀態(tài);
②在幻燈片中調(diào)整該對(duì)象的位置或大小,然后單擊浮動(dòng)工具欄中的“停止錄制”;
③打開“工具/宏”菜單中的“宏”對(duì)話框,選中相應(yīng)的宏名并單擊“編輯”后即可進(jìn)入宏代碼窗口,此時(shí)在代碼中就可以查看到該對(duì)象的名稱,記下名稱后將錄制的宏刪除即可。
啟動(dòng)PowerPoint,建立2張空白幻燈片,通過(guò)“視圖/工具欄”菜單打開“控件工具箱”。
1.添加對(duì)象
(1)第1張幻燈片
①選中“控件工具箱”中的“選項(xiàng)按鈕”控件,在幻燈片左側(cè)畫出3個(gè)選項(xiàng)按鈕,并將Caption屬性依次設(shè)置成 “打鈴0次”、“打鈴 1次”和“打鈴2次”;添加2個(gè) “文本框”控件,分別用于輸入限定的時(shí)長(zhǎng)和第1次打鈴的時(shí)間;再添加1個(gè)“命令按鈕”控件,并將Caption屬性設(shè)置成“確定”。
②參照?qǐng)D1,通過(guò) “插入/文本框”菜單在相應(yīng)位置添加水平文本框,并設(shè)置文字內(nèi)容。
(2)第2張幻燈片
①參照?qǐng)D2,在幻燈片底部添加2個(gè)“命令按鈕”控件,并將Caption屬性設(shè)置成“計(jì)時(shí)”和“停止”;在兩個(gè)按鈕之間添加1個(gè)“復(fù)選框”控件,并將Caption屬性設(shè)置成“啟用遙控筆”。
②通過(guò)“插入/文本框”菜單在幻燈片中下部添加1個(gè)用于顯示數(shù)字時(shí)鐘的水平文本框,并設(shè)定好字體的顏色、字號(hào)等格式。
③在幻燈片的中上方用藝術(shù)字或文本框添加會(huì)議標(biāo)題等信息。
(3)說(shuō)明
“啟用遙控筆”復(fù)選框放入第2張幻燈片的原因是:當(dāng)按下遙控筆上的上、下兩個(gè)按鈕時(shí),相當(dāng)于按下鍵盤上的PgUp、PgDn這兩個(gè)鍵,為了讓這兩個(gè)按鈕對(duì)應(yīng)“計(jì)時(shí)”和“停止”按鈕的單擊事件,必須有一個(gè)能夠獲得焦點(diǎn)且能捕獲按鍵信息的控件,命令按鈕無(wú)法獲得焦點(diǎn),因此只好用復(fù)選框。放映時(shí),不管此復(fù)選框是否被選中,只要焦點(diǎn)在其上即可捕獲遙控筆的按鍵信息。
2.編寫宏代碼
(1)確定“數(shù)字時(shí)鐘”文本框的名稱
如上所述,為了方便用戶操作和控制,呈現(xiàn)“數(shù)字時(shí)鐘”的對(duì)象是PPT中的水平文本框,此文本框的名稱無(wú)法直接查到,只好用前面所講的錄制臨時(shí)宏的方法進(jìn)行查找。在本例中查出的該對(duì)象的名稱是Shapes ("Text Box 7")。
(2)編寫第1張幻燈片的宏代碼
雙擊第1張幻燈片中的“確定”按鈕,進(jìn)入Slide1(第1張幻燈片)的宏代碼窗口,并輸入以下代碼(代碼中有較詳細(xì)的注釋,限于篇幅,不做進(jìn)一步解釋,下同):
3.運(yùn)行
放映幻燈片,在第1張幻燈片中設(shè)定好倒計(jì)時(shí)的時(shí)長(zhǎng)、打鈴的次數(shù)及時(shí)間等相關(guān)參數(shù)后,單擊“確定”按鈕即可進(jìn)入倒計(jì)時(shí)主界面(即第2張幻燈片),單擊“啟用遙控筆”復(fù)選框后就可借助鼠標(biāo)或遙控筆進(jìn)行計(jì)時(shí)、打鈴等操作,操作十分方便。運(yùn)行界面如圖1、圖2所示。
需要說(shuō)明的是,為了防范宏病毒對(duì)計(jì)算機(jī)的侵害,在PowerPoint的“工具”菜單中對(duì)宏的安全性設(shè)置了不同的安全級(jí),只有將安全級(jí)設(shè)置成“低”或“中”,重新打開相應(yīng)的演示文稿,并在系統(tǒng)提示的“安全警告”對(duì)話框中選擇“啟用宏”(當(dāng)安全級(jí)設(shè)置成“中”時(shí)會(huì)出現(xiàn)此對(duì)話框),這樣才能在幻燈片放映時(shí)啟動(dòng)宏程序,看到遙控倒計(jì)時(shí)及電子打鈴的效果。
在充分發(fā)揮PPT自身優(yōu)勢(shì)的同時(shí),若能適當(dāng)應(yīng)用VBA功能,制作出的演示文稿就會(huì)如虎添翼,其交互性和演示效果毫不遜色于專業(yè)軟件開發(fā)工具制作的作品。
[1](美)戴維斯(Davis,G.H.)著,楊密、楊樂、柯樹森譯.VBA從入門到精通[M].北京:電子工業(yè)出版社,2008.6.
[2]顏清.PowerPoint課件中基于VBA的習(xí)題設(shè)計(jì)[J].計(jì)算機(jī)與現(xiàn)代化,2006,(2).
[3]程智.利用VBA來(lái)提高PowerPoint制作的課件的交互性[J].中國(guó)電化教育,2002,(6).
(編輯:王天鵬)
TP317
A
1673-8454(2011)22-0043-04