Powerpoint Macro VBA - 选中“幻灯片图像”复选框

问题描述

我一直在尝试修改 David Foster 前段时间创建的一段有用的代码, 然而,事实证明,在参考文献中很难找到对这段代码真正有用的补充。

我需要获取宏以确保在将笔记母版应用于所有幻灯片时选中“幻灯片图像”复选框,因为某些幻灯片已被“弗兰肯斯坦”添加到项目中。

我正在努力在 powerpoint 参考资料中找到对此复选框的任何参考,有什么想法吗?

Sub DReplaceNotesMaster()
 
' Modified version of code originally posted to
' msnews.microsoft.com public newsgroups by
' David Foster in May of 1999
 
    Dim ctl As CommandBarControl
    Dim oSl As Slide
 
    ' 700 is the control ID for Layout
    Set ctl = CommandBars.FindControl(Id:=700)
    ActiveWindow.ViewType = ppViewNotesPage
 
    If (ctl Is nothing) Then
        MsgBox "command not available"
        Exit Sub
    End If
 
    For Each oSl In ActivePresentation.Slides
 
        ' go to the current slide
        ActiveWindow.View.GotoSlide (oSl.SlideIndex)
        DoEvents
 
        ' Bring up the dialog
        ctl.Execute
        DoEvents
 
        ' send it the needed keystrokes
        SendKeys "%r{enter}"
        DoEvents
 
    Next
 
End Sub

解决方法

奇怪的是,笔记页面上的幻灯片图像被称为标题占位符。这个子检查每个笔记页面是否有名称中带有“幻灯片图像”的占位符,如果没有找到,则添加它。这假定有人尚未使用“选择”窗格重命名幻灯片图像占位符。如果有,您将不得不捕获由此产生的错误,显示消息“无效请求:幻灯片已包含该类型的最大占位符”。

Sub ShowNotesSlideImage()
    Dim oSlide As Slide
    Dim oShape As Shape
    Dim bTitleFound As Boolean
    
    For Each oSlide In ActivePresentation.Slides
        bTitleFound = False
        For Each oShape In oSlide.NotesPage.Shapes
            If oShape.Type = msoPlaceholder Then
                If InStr(oShape.Name,"Slide Image") > 0 Then
                    bTitleFound = True
                End If
            End If
        Next oShape
        If bTitleFound = False Then
            oSlide.NotesPage.Shapes.AddPlaceholder Type:=ppPlaceholderTitle
        End If
    Next oSlide
End Sub

Microsoft 的 Office 2016 Help Files: Office Fluent User Interface Control Identifiers 是一种用于查找控件名称和 ID 号的便捷资源,可免费下载。