PPT插入计时器
微軟或WPS的PPT軟件里只能插入當前系統時間,不明白為什么不設計一個類似秒表計時器的功能,畢竟這個功能非常實用。在網上搜索良久,開始采用在PPT里插入Flash動畫計時器,雖然有不少現成的Flash可供下載,而想要定制理想的計時器還得會Flash編程的相關知識,而且這個方法有個嚴重的缺陷,一旦演示PPT時翻頁過快,Flash動畫計時器會莫名地卡死;后來采用推薦眾多的PPT宏,但是網上下載的許多宏都是加密的,無法查看源代碼,于是搜索VBA編程相關的教程,東拼西湊出下面的代碼,歡迎大家更改和完善!
PPT 2007下,新建空白文檔->開發工具->Visual Basic,VBAProject右鍵->插入->模塊
在右邊空白編輯區輸入如下代碼
Option Explicit '聲明api函數,使用定時器 Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As LongDim flag As Boolean Dim oSh As Shape Dim count As Integer '總共的秒數 Dim h As Integer '時 Dim m As Integer '分 Dim s As Integer '秒Public Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)count = count + 1s = count Mod 60m = (count \ 60) Mod 60h = count \ 3600oSh.TextFrame.TextRange.Text = TimeSerial(h, m, s)End SubPublic Sub OnSlideShowPageChange()If flag = False Then '讓下面的代碼只執行一次flag = True'向母版添加文本框With ActivePresentationSet oSh = _.Designs(1).SlideMaster.Shapes.AddTextbox( _msoTextOrientationHorizontal, _.PageSetup.SlideWidth - 75, _ .PageSetup.SlideHeight - 25, _ 75, 25) oSh.Name = "TimeCount"With oSh.TextFrame.TextRange.Font.Name = "Arial" '文本框字體.Font.Size = 12 '文本框字體大小.Text = "0:00:00" '文本框文字End WithEnd With'啟動計時器Dim id As Longid = SetTimer(0, 0, 1000, AddressOf TimerProc)End IfEnd Sub
文檔另存為->其他格式->.ppa文件
使用時,用PPT 2007打開一個文檔,開發工具->宏安全性->宏設置->啟用所有宏->確定
Office按鈕->PowerPoint選項->加載項->PowerPoint加載項->轉到
在彈出的窗口中添加剛保存的.ppa文件,關閉窗口,然后開始放映PPT,翻頁后才可以看到右下角的計時器。
但是有個bug,每次翻頁時計時器總會顯示前一個時間點,再顯示當前計時點,如果大家有好的解決方案歡迎留言。
或者在PPT母版里面添加文本框(ActiveX控件),然后在TimerProc方法中更新文本框顯示計時,這樣可以避免上述問題,但是會出現一個新問題,文本框的背景色不能透明。
如果將上述VBA代碼添加到PPT文檔里再另存為PPT文件,那么播放該PPT時就無需加載.ppa文件,當然前提都要設置PPT2007啟用所有宏
總結
- 上一篇: Java实现还原微博短链接
- 下一篇: 计算机面试常见题目-网络