小脚本 | PPT播放时显示页码和总页数

想要提高讲座水平,PPT中的辅助功能可以派上大用场,页脚中的时间和页码功能都可以帮助演讲者控制整体进度。<#>可以显示当前页码,但如果想同时显示总页数,常见做法是在母版视图中修改一下(如<#>/45)。修改之后需要在插入菜单中打开页脚界面,点击全部应用(一次无效就重复勾选“页码”多次应用)。

这种方法需要在每次修改ppt时都要记得修改总页数,稍不注意就露出马脚。这完全不是我们懒人的风格嘛,懒人需要的是一劳永逸的方法。

程序猿的世界里,理论上没有程序解决不了的问题,这回是大微软的VBA来救场。本想重复利用这个“页码”对象的,谁料他命名随意,不同页面中可能不一样,不好分辨。只好在播放时临时添加个文本框,播放结束后再统一删除。另外标题页不想显示页码,这点取了个巧,找不到正规的属性,直接用当前页面中图形的数量来判断,通常标题页元素都较少:)

以下是全部代码,非常不规范,凑合用吧。

Sub OnSlideShowPageChange()
    On Error GoTo Err_Handle
    ActivePresentation.Slides(ActivePresentation.SlideShowWindow _
    .View.CurrentShowPosition).Shapes("asdf").Delete
Err_Handle:
    If ActivePresentation.Slides(ActivePresentation.SlideShowWindow _
    .View.CurrentShowPosition).Shapes.Count > 3 Then
        With ActivePresentation.Slides(ActivePresentation.SlideShowWindow. _
        View.CurrentShowPosition).Shapes.AddTextbox(msoTextOrientationHorizontal, _
        ActivePresentation.PageSetup.SlideWidth - 60, _
        ActivePresentation.PageSetup.SlideHeight - 20, 100, 10)
            .Name = "asdf"
            .TextFrame.TextRange.Font.Color.RGB = RGB(144, 144, 144)
            .TextFrame.TextRange.Font.Name = "Arial"
            .TextFrame.TextRange.Font.Size = 12
            .TextFrame.TextRange.Text = Str(ActivePresentation.SlideShowWindow _
            .View.CurrentShowPosition) & "/" & Str(ActivePresentation.Slides.Count)
        End With
    End If
End Sub

Sub OnSlideShowTerminate()
    On Error Resume Next
    For i = 1 To ActivePresentation.Slides.Count
        ActivePresentation.Slides(i).Shapes("asdf").Delete
    Next
End Sub

你可能感兴趣的:(小脚本 | PPT播放时显示页码和总页数)