Create a new slide in VBA for PowerPoint 2010 with custom layout using Master
powerpoint, powerpoint-2010, vba
Solution
All your custom layouts can be accessed via VBA through the `CustomLayouts`collection of the `SlideMaster` property of a `Presentation` object. When you create a custom layout, give it a meaningful name. Then you can fetch it from the `CustomLayouts` collection. It appears that Microsoft didn't implement lookup by name, so you will have to iterate through the collection to find the `CustomLayout` object with the right name.
Once you have a reference to the desired `CustomLayout` object, you use the `AddSlide` method of the `Slides` collection, which takes a `CustomLayout` object as the second arguments (as opposed to `Slides.Add`, which you used in your question, and which takes a `PpSlideLayout` enumeration value).
Below is a helper method for fetching a custom layout by name, and example of using it as you wanted:
Public Function GetLayout( _
LayoutName As String, _
Optional ParentPresentation As Presentation = Nothing) As CustomLayout
If ParentPresentation Is Nothing Then
Set ParentPresentation = ActivePresentation
End If
Dim oLayout As CustomLayout
For Each oLayout In ParentPresentation.SlideMaster.CustomLayouts
If oLayout.Name = LayoutName Then
Set GetLayout = oLayout
Exit For
End If
Next
End Function
Sub AddCustomSlide()
Dim oSlides As Slides, oSlide As Slide
Set oSlides = ActivePresentation.Slides
Set oSlide = oSlides.AddSlide(oSlides.Count + 1, GetLayout("Smiley"))
End Sub
Problem
I have the following VBA code to create a new PowerPoint slide: ``` longSlideCount = ActivePresentation.Slides.Count With ActivePresentation.Slides Set slideObject = .Add(longSlideCount + 1, ppLayoutTitle) End With ``` ...which inserts a new slide of type 'ppLayoutTitle', but I am wondering if it is possible to create a custom layout in the 'Slide Master View' and then insert that particular slide template into the presentation? Thanks in advance!!!