@root "Возможно, новая версия PowerPoint может назначать теги / категории слайдам"
Любая версия Windows начиная с '97 и далее может назначать несколько "тегов" для презентаций, слайдов или фигур на слайдах. Я вполне уверен, что то же самое относится и к версиям 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