在 PowerPoint 中嵌入 Flash (`.swf`) 後,預設只能自動播放或點擊播放,**無法像影片播放器般控制進度**。透過 **ActiveX 控制項 (Shockwave Flash Object) + VBA 巨集**,可打造專屬播放控制列:播放、暫停、前進 30 幀、後退 30 幀、回到開頭、跳到結尾。本文提供完整 VBA 碼與部署步驟。
第一階段:插入 Flash ActiveX 控制項
- 「檢視」→「工具列」→「控制項工具箱」 (或「開發工具」→「控制項」→「其他控制項」)。
- 選擇 **「Shockwave Flash Object」** → 在投影片拖曳出一個矩形區域 (依影片比例調整)。
- 選取控制項 → 右鍵「屬性」 (或 F4) 設定:
• `Movie`:輸入 `.swf` 完整絕對路徑 (如 `C:\Media\song.swf`)。
• `Name`:保留預設 `ShockwaveFlash1` (VBA 程式碼引用此名稱)。
• `Playing`:`False` (不自動播放,由按鈕控制)。
• `Loop`:`False` (不自動循環)。
• `EmbedMovie`:`True` (將影片嵌入 PPT 檔案,攜帶方便)。
第二階段:建立六大控制按鈕 + VBA 程式碼
在「控制項工具箱」選「命令按鈕」,拖曳建立 6 個按鈕,設定 `Name` 與 `Caption`:
| 功能 |
Name |
Caption |
VBA 程式碼 (雙擊按鈕進入模組撰寫) |
| 播放 |
`cmd_play` |
播放 |
Private Sub cmd_play_Click() ShockwaveFlash1.Playing = True End Sub |
| 暫停 |
`cmd_pause` |
暫停 |
Private Sub cmd_pause_Click() ShockwaveFlash1.Playing = False End Sub |
| 前進 |
`cmd_forward` |
前進 |
Private Sub cmd_forward_Click() ShockwaveFlash1.FrameNum = ShockwaveFlash1.FrameNum + 30 ShockwaveFlash1.Playing = True End Sub |
| 後退 |
`cmd_back` |
後退 |
Private Sub cmd_back_Click() ShockwaveFlash1.FrameNum = ShockwaveFlash1.FrameNum - 30 ShockwaveFlash1.Playing = True End Sub |
| 回到開頭 |
`cmd_start` |
返回 |
Private Sub cmd_start_Click() ShockwaveFlash1.FrameNum = 1 ShockwaveFlash1.Playing = True End Sub |
| 跳到結尾 |
`cmd_end` |
結束 |
Private Sub cmd_end_Click() ShockwaveFlash1.FrameNum = ShockwaveFlash1.TotalFrames End Sub |
關鍵程式碼邏輯解析
- `FrameNum`:目前幀號 (1-based);`TotalFrames`:總幀數。
- 前進/後退/返回 必須加 `Playing = True`:實測若無此行,跳轉後影片會停在該幀不動,**必須強制播放**才能持續運行。
- 步進 30 幀:約 1 秒 (30fps);可依影片幀率調整 (如 24fps 改 24)。
第三階段:巨集安全性設定 (關鍵!)
預設巨集安全性為「高」會封鎖 VBA 執行。必須設定:
- PowerPoint 2003/2007:「工具」→「巨集」→「安全性」→ 選「低」 (不建議) 或「中」 (詢問啟用)。
- PowerPoint 2010+:「檔案」→「選項」→「信任中心」→「信任中心設定」→「巨集設定」→ 選 **「停用所有巨集但顯示通知」** (推薦) → 開啟檔案時點選「啟用內容」。
- **數位簽章簽署巨集專案** 可繞過安全性提示 (企業環境推薦)。
⚠ 歷史背景與現代替代
- Adobe Flash 於 2020/12/31 終止支援,瀏覽器/系統不再內建 Flash Player,`Shockwave Flash Object` 控制項在現代 Office/Windows **無法運作**。
- 現代方案:
• **插入 MP4 影片** → 原生支援播放控制列 (播放/暫停/進度條/音量/全螢幕/播放速度)。
• **線上影片 (YouTube/Vimeo/Stream)** → 插入連結,瀏覽器原生播放器控制。
• **需要互動式向量動畫** → 改用 Lottie (JSON) + PowerPoint 365 原生支援、或 H5P/Articulate 輸出 HTML5 嵌入。
雖然 Flash 時代結束,但 **ActiveX 控制項 + VBA 事件驅動模型** 仍是 Office 客製化自動化的核心範式,可移植至控制 Windows Media Player、VLC ActiveX、自訂 DLL 等場景。