问题描述
我一直在尝试修改 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 号的便捷资源,可免费下载。