網路城邦
上一篇 回創作列表 下一篇  字體:
[Powerpoint VBA] 增益集: 新增空白投影片按鈕
2009/03/03 12:54:39瀏覽6566|回應0|推薦0

VBA for Powerpoint 的實例比較少見, 我也很少實際寫來用。當我想把一個新增空白投影片按鈕的Powerpoint VBA巨集製作成增益集的時候, 查了資料才知道, 原來 Powerpoint 的 auto_open() 和 auto_close() 只有在增益集才有效。(開啟或關閉 ppt 檔,它裡面的auto_open() 和 auto_close() 不會自動執行。 )

網友的問題是:「我使用 Powerpoint 2003,按「新投影片」時,新增的投影片都會有「按一下以新增標題」這樣的框框。我知道可以到物件配置方式,按「空白」的物件配置方式,以變成空白,或直接在左邊頁面欄,複製貼上一個空白的頁面,但這樣有點麻煩,可以做到按「新投影片」時,新增的投影片就是空白的嗎?」

針對這個需求, 我寫了一個 VBA (底下的NewBlankSlide) 副程式, 它會把「空白」物件配置的新投影片插在最後一張。而為了方便使用,我把它做成一個會在 "一般(Standard)" 工具列設定一個按鈕的增益集, 這個按鈕會執行NewBlankSlide。
手續有一點點複雜:

1)將巨集的 "安全性" 設為 "中"
2) 建立一個新簡報檔 (開新檔案)
3) 按 Alt+F11, 進入 PowerPoint 的 Visiual Basic 編輯環境, 點選 [插入]-->模組
4)copy底下的程式碼, 把它貼到模組程式碼視窗裡:

Sub NewBlankSlide()
NewSlideNo = ActivePresentation.Slides.Count + 1
ActivePresentation.Slides.Add(Index:=NewSlideNo, Layout:=ppLayoutBlank).Select
End Sub

Sub auto_open()
 '當這個檔案被開啟的時候, 也就是這個增益集被啟動的時候, 就要新增這個按鈕
Set myControl = CommandBars.FindControl(Type:=msoControlButton, Tag:="NEWBLANKSLIDE")
If myControl Is Nothing Then
    Set myControl = CommandBars.FindControl(Type:=msoControlButton, Id:=680)
    myControl.CopyFace
    Set newItem = Application.CommandBars("Standard").Controls.Add( _
Type:=msoControlButton, Before:=1)
    With newItem
    .BeginGroup = True
        .Caption = "空白投影片"
        .Tag = "NEWBLANKSLIDE"
        .FaceId = 0
        .OnAction = "NewBlankSlide"
        .PasteFace
    End With
End If
End Sub

Sub auto_close()
 '當這個檔案被關閉的時候, 也就是這個增益集被移除的時候, 就把這個按鈕刪掉

Set myControl = CommandBars.FindControl(Type:=msoControlButton, Tag:="NEWBLANKSLIDE")
If myControl Is Nothing Then
Else
    myControl.DeleteEnd If
End Sub


5)回到PowerPoint 投影片編輯視窗, 執行[檔案]-->另存新檔,
選擇 [檔案類型] 為: "PowerPoint增益功能(*.ppa)" , 請給這檔案取個名字叫做"新增空白投影片", Powerpoint 會把這個檔案存到 C:\Documents and Settings\<使用者名稱>\Application Data\Microsoft\Add-Ins 資料夾

6)執行[工具]-->[增益集], 在 "增益集" 功能視窗裡按 [新增] 鈕,
然後點選你剛才存檔的 "新增空白投影片.ppa" 檔, 最後把"增益集" 功能視窗關掉

7) 檢查 Powerpoint 的 "一般" 工具列的第一個按鈕, 是不是叫做"空白投影片"? 試試看它的功能吧!!

上述手續只需做一次, 從此之後, 啟動 Powerpoint 裡面就會有此按鈕 , 而因為auto_open()程式裡面有檢查, If myControl Is Nothing Then ......, 如果按鈕不存在才會新增, 所以不會重覆。

點這裡可以下載這個增益集 

( 知識學習科學百科 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=WayCheng&aid=2704489