PowerPoint: запомнить шаблоны «скрыть слайд»

309
root

Есть ли способ легко скрыть определенный фиксированный набор слайдов PowerPoint, поэтому мне не нужно выбирать весь этот набор каждый раз, когда я хочу их скрыть? Он должен основываться на содержании именно этих слайдов, а не на их количестве. (Потому что номера меняются, когда другие слайды вставляются / удаляются.)

Может быть, новая версия PowerPoint может назначать теги / категории слайдам, а встроенная функция PowerPoint может скрывать слайды с этим тегом? Или к заметкам докладчика можно добавить тег - может ли макрос прочитать его и скрыть соответствующие слайды, как?

Предыстория: у меня есть набор слайдов PowerPoint, которые я постоянно обновляю и на которых я делаю доклады для немного другой целевой аудитории по частично перекрывающимся темам. Иногда я скрываю номер слайдов, скажем, 3,7,15,20,25,30. В другой день я показываю их, но скрываю слайды 2,4,10,17. Затем я улучшаю слайды 11,12,14. Затем я показываю все, кроме скрытия слайдов 3,7,15,20,25,30.

1

2 ответа на вопрос

2
Steve Rindsberg

@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 
1
Jamie Hanrahan

Я делаю это с текстом на страницах заметок. Что-то вроде

~!hidden

(потому что ~! это шаблон, который просто не появится ни в одном тексте, который я когда-либо буду использовать)

Затем перейдите к представлению «Сортировщик слайдов», найдите все вхождения ~!hiddenи нажмите кнопку «Скрыть слайд». Готово.

Я использую подобные вещи, чтобы идентифицировать подмножества слайдов для других целей.

Конечно, если вы хотите, чтобы на страницах заметок содержались заметки, которые печатаются вместе с вашим раздаточным материалом, вам придется подумать немного сложнее. Довольно легко поместить все эти «теги» в конец страницы заметок, где большинство читателей будут игнорировать их. Если они действительно беспокоят вас на страницах напечатанных заметок, вы можете написать небольшой VBAscript, чтобы избавиться от них.

Вы можете сделать что-то похожее, добавив форму «флажка» со слайда, чтобы она была видна при редактировании шоу, но не при представлении / печати, и вам не пришлось бы беспокоиться о том, печатается ли он на страницах заметок. , Недостаток этого или вашего метода в том, что он работает только для показа / скрытия одного подмножества слайдов, в то время как предложенное тегирование позволяет любому слайду или слайдам находиться в одной, многих или во всех версиях презентации. Steve Rindsberg 5 лет назад 0
Что касается «недостатка», нет - «~! Hidden» - не единственная моя возможная строка. :) Jamie Hanrahan 5 лет назад 1
Более точные инструкции: * Вид → Сортировщик слайдов *, затем * Домой → Найти * (или Ctrl + F), найдите свое кодовое слово, например `~! Hidden`, нажмите * Найти все *, а затем * Показ слайдов → Скрыть слайд * (или * щелкните правой кнопкой мыши на одном из выбранных слайдов → Скрыть слайд *) root 5 лет назад 1
Альтернатива, если вы хотите отметить, какие слайды должны быть не скрытыми, а не скрытыми: сначала скройте все слайды, затем используйте ту же технику для поиска `кодового слова` и отобразите их. root 5 лет назад 1
Я высоко ценю ответ «лучший ответ» и «лучший ответ», но я думаю, что VBAscript Стива Риндсберга также заслуживает некоторой любви. Jamie Hanrahan 5 лет назад 0
То же самое, @JamieHanrahan. Всегда хорошо иметь несколько возможных решений на выбор, и иногда решение не VBA является лучшим / наиболее гибким. Steve Rindsberg 5 лет назад 1