Powerpoint Interop API обеспечивает доступ к нескольким мастерам слайдов в виде мастера слайдов

У меня есть презентация PowerPoint с несколькими мастер-слайдами. Я хочу получить доступ к текущему активному мастеру слайдов презентации PowerPoint в режиме Master View, используя InterOp API и VB.net. Когда я пытался получить доступ к активному мастеру слайдов, он всегда выбирал первый мастер слайдов, а не активный мастер слайдов. Я пробовал его с помощью слайдов, и я мог получить доступ к текущему слайду. Но в представлении slideMaster я не смог найти способ доступа к указанному мастеру слайдов.

If(ActiveWindow.ActivePane.ViewType = PowerPoint.PpViewType.ppViewSlideMaster) Then 'condition 

ActivePresentation.Slides(2) 'this way I can access specified slide.
ActivePresentation.SlideMaster 

2 ответа

Решение

Если под "активным мастером слайдов" вы подразумеваете мастер слайдов, используемый текущим выбранным слайдом, вы можете получить к нему доступ через

ActiveWindow.Selection.SlideRange(1).Design.SlideMaster

Или так же для мастера первого слайда в презентации

ActivePresentation.Slides(1).Design.SlideMaster

Или в режиме просмотра слайдов

If ActiveWindow.ActivePane.ViewType = ppViewMasterThumbnails Or _
    ActiveWindow.ActivePane.ViewType = ppViewSlideMaster Then

    ActiveWindow.View.Slide...
End If
Debug.Print ActiveWindow.View.Slide.Name
Debug.Print ActiveWindow.View.Slide.Design.Name

В представлении Slide Master, PPT 2010 (и, вероятно, также 2007), в первой строке указано имя выбранного в настоящий момент макета или мастера, во второй - имя дизайна, лежащего в основе мастера.

В мультимастерной презентации вы смотрите на коллекцию Designs, чтобы прийти к мастерам.

Другие версии PPT работают по-другому. Это объясняет больше о проектах, макетах, мастерах, львах, тиграх и медведях, о мой:

Слайды, мастера, дизайны, макеты... как они все сочетаются друг с другом?

Другие вопросы по тегам