這個其實是在搜尋如何在威力導演製作影片進度條的過程中看到的教學
PowerPoint (PPT) 進度條怎麼用?教你 3 步驟做出進度列
參考了這個網站的程式碼再修改成自己想要的樣式
備註:Powerpoint VBA 沒有錄製巨集的功能,至少2016之後就沒有
#4-6 宣告一個 Presentation物件,名稱為 pp
將 Application.ActivePresentation 賦值給pp
備註:set 是給物件變數賦值 ,set不可以省略
let 是給普通變數賦值,例如 let i =10,let可以省略
set x =range(“A1”) → x 代表 A1這個儲存格物件
(let) x =range(“A1”) ,等於x =range(“A1”).value→ x為儲存格A1的值
#10-32 透過迴圈,在每一個頁面中增加shape物件
#13 如同前面提到set的用法,這裡就是將新增的shape賦值給s來代表
Shapes.AddShape()相關的設定可以參考微軟網頁的說明
#15-24 利用with語句設定shape物件的textframe相關屬性
#26-30 設定shape物件的外框、填色、名稱
因為都是同一層的屬性,當然也可以用with語句來寫
With s .Line.Visible = msoFalse '取消外框 '.Line .Weight = 2 '設定外框粗細 .Fill.ForeColor.RGB = RGB(211, 117, 21) .Name = "PB" End With
也可以把全部的shape屬性設定寫在一起
With s .textframe.TextRange.Text = pp.Slides(x).SlideNumber .textframe.TextRange.Font.Color.RGB = RGB(0, 32, 96) .textframe.TextRange.Font.Size = 20 .textframe.MarginBottom = 10 .textframe.MarginLeft = 10 .textframe.MarginRight = 10 .textframe.MarginTop = 10 .Line.Visible = msoFalse '取消外框 '.Line .Weight = 2 '設定外框粗細 .Fill.ForeColor.RGB = RGB(211, 117, 21) .Name = "PB" End With
完整程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Public Sub pp2() On Error Resume Next Dim pp As Presentation Set pp = Application.ActivePresentation Dim x As Integer For x = 1 To pp.Slides.Count pp.Slides(x).Shapes("PB").Delete Set s = pp.Slides(x).Shapes.AddShape(msoShapeRectangle, 0, 0, x * pp.PageSetup.SlideWidth / pp.Slides.Count, 20) With s.textframe .TextRange.Text = pp.Slides(x).SlideNumber .TextRange.Font.Color.RGB = RGB(0, 32, 96) .TextRange.Font.Size = 20 .MarginBottom = 10 .MarginLeft = 10 .MarginRight = 10 .MarginTop = 10 End With s.Line.Visible = msoFalse '取消外框 's.Line .Weight = 2 '設定外框粗細 s.Fill.ForeColor.RGB = RGB(211, 117, 21) s.Name = "PB" Next x: End Sub |
執行巨集之後,再逐頁撥放的效果