Work anywhere from any device with Microsoft 365

Upgrade to Microsoft 365 to work anywhere with the latest features and updates.

Upgrade now

How to get the currently selected Custom Layout in a PowerPoint slide master using VBA?

I have a need to programmatically add shapes to a selected custom layout (as selected by a user).

Backtracking for a second, if a user is in the normal view and has selected one or more slides, then it's possible to find out how many and address them as follows:

' Get the number of selected slides


' Get the slide index of the first selected slide

iSlideIndex = ActiveWindow.Selection.SlideRange(1).SlideIndex

and then add shapes to the first selected slide like this:

ActivePresentation.Slides(iSlideIndex).Shapes.AddTextbox _

  msoTextOrientationHorizontal, 0, 0, 10, 10

But when one tries to return the number of slides for a selected custom layout in the slide master view, a run-time error is returned:

Selection (unknown member) :  Invalid request. SlideRange cannot be constructed from a Master.

It's possible to select one or more custom layouts in the slide master view via the standard UI so does this mean there is no way to get the selected custom layout object from the object model? The closest I've got is this:


But can't see how to identify which of the custom layouts the user has selected.


See if this gets you started:

Sub tryThis()
Dim selCL As Object
Set selCL = ActiveWindow.View.Slide
selCL.Shapes.AddShape msoShape12pointStar, 10, 10, 20, 20
End Sub

You would probably want to check that you were in Slide Master View

If ActiveWindow.ViewType = 9 Then
If ActiveWindow.Panes(2).ViewType = ppViewSlideMaster Then

' You are

End If

End If

Did this solve your problem?

Sorry this didn't help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.


Question Info

Last updated March 16, 2020 Views 623 Applies to: