Create a new slide in VBA for PowerPoint 2010 with custom layout using Master

后端 未结 1 1077
盖世英雄少女心
盖世英雄少女心 2021-02-06 10:37

I have the following VBA code to create a new PowerPoint slide:

longSlideCount = ActivePresentation.Slides.Count

With ActivePresentation.Slides
    Set slideObj         


        
相关标签:
1条回答
  • 2021-02-06 11:20

    All your custom layouts can be accessed via VBA through the CustomLayoutscollection 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
    
    0 讨论(0)
提交回复
热议问题