有没有办法隐藏能否轻松地隐藏一组特定的固定 PowerPoint 幻灯片,这样每次我想隐藏它们时就不必选择整个幻灯片集?它应该基于这些幻灯片的内容,而不是它们的编号。(因为插入/删除其他幻灯片时编号会发生变化。)
也许新版 PowerPoint 可以为幻灯片分配标签/类别,而内置的 PowerPoint 功能可以隐藏带有该标签的幻灯片?或者可以将标签添加到演讲者笔记- 宏可以读取它并隐藏相应的幻灯片吗?如何操作?
背景故事:我有一套 PowerPoint 幻灯片,我会不断更新,并根据这些幻灯片向略有不同的目标受众就部分重叠的主题进行演讲。有时我会隐藏幻灯片编号,例如 3、7、15、20、25、30。另一天,我会取消隐藏这些幻灯片,但隐藏幻灯片 2、4、10、17。然后我会改进幻灯片 11、12、14。然后,我取消隐藏所有幻灯片,但再次隐藏幻灯片 3、7、15、20、25、30。
答案1
我用笔记页上的文本来做这件事。比如
~!hidden
(因为 ~! 是一种不会出现在我可能使用的任何文本中的模式)
然后进入幻灯片浏览视图,找到所有出现的~!hidden
,然后单击“隐藏幻灯片”按钮。完成。
我使用类似的东西来识别幻灯片的子集以用于其他目的。
当然,如果您希望注释页包含与讲义一起打印的注释,您将不得不多加思考。将所有这些“标签”放在注释页的末尾相当容易,大多数读者都会忽略它们。如果它们在打印的注释页上确实困扰您,您可以编写一些 VBAscript 来摆脱它们。
答案2
@root “也许新版本的 PowerPoint 可以为幻灯片分配标签/类别,”
从 97 版开始,任何 Windows 版本都可以为演示文稿、幻灯片或幻灯片上的形状分配多个“标签”。我相当肯定,Mac PPT 版本也是如此,除了 2008 版,它们没有 VBA。标签没有用户界面;您需要使用 VBA 或其他编程语言来处理它们。
一旦幻灯片被标记,即使您在放映中移动它也没有关系;标签会保留在幻灯片上。
例如,使用 VBA,对于演示文稿中每个不同的节目,您可以隐藏节目中的所有幻灯片,然后运行 TagSlides:
Sub TagSlides()
' NOTE: mark all the slides in this show
' as hidden before running this code
Dim sShowName As String
Dim oSl As Slide
' Get a name for this show/set of slides
' Quit if user enters nothing
sShowName = InputBox("Name of show", "Show name")
If Len(sShowName) = 0 Then
Exit Sub
End If
For Each oSl In ActivePresentation.Slides
' If it's hidden, tag it with the show name
If oSl.SlideShowTransition.Hidden Then
oSl.Tags.Add Ucase(sShowName), "Y"
' you could run the same code to set the tag value
' to "" if you want to remove the tag
End If
Next
End Sub
完成后,您可以运行它,它会询问您要使用的节目名称,然后使属于该节目的任何幻灯片可见,隐藏其他幻灯片。
Sub MakeShowVisible()
Dim sShowName As String
Dim oSl As Slide
' Get a name for this show/set of slides
' Quit if user enters nothing
sShowName = InputBox("Name of show", "Show name")
If Len(sShowName) = 0 Then
Exit Sub
End If
For Each oSl In ActivePresentation.Slides
If Len(oSl.Tags(Ucase(sShowName))) > 0 Then
' the slide belongs to the show so unhide it
oSl.SlideShowTransition.Hidden = False
Else
' not part of the show; hide it
oSl.SlideShowTransition.Hidden = True
End If
Next
End Sub
一张幻灯片可以属于多个放映。如果您需要向放映添加新幻灯片,请先运行下面的 HideShow,这将隐藏给定放映中当前的所有幻灯片,然后隐藏新幻灯片并再次运行 TagSlides。
Sub HideShow()
Dim sShowName As String
Dim oSl As Slide
' Get a name for this show/set of slides
' Quit if user enters nothing
sShowName = InputBox("Name of show", "Show name")
If Len(sShowName) = 0 Then
Exit Sub
End If
For Each oSl In ActivePresentation.Slides
If Len(oSl.Tags(sShowName)) > 0 Then
' the slide belongs to the show so hide it
oSl.SlideShowTransition.Hidden = True
Else
' not part of the show; UNhide it
oSl.SlideShowTransition.Hidden = False
End If
Next
End Sub