すべてのカスタム レイアウトは、オブジェクトのプロパティのCustomLayouts
コレクションを通じて VBA 経由でアクセスできます。カスタム レイアウトを作成するときは、意味のある名前を付けます。その後、コレクションから取得できます。Microsoft は名前によるルックアップを実装していないようです。そのため、コレクションを繰り返し処理して、正しい名前のオブジェクトを見つける必要があります。SlideMaster
Presentation
CustomLayouts
CustomLayout
CustomLayout
目的のオブジェクトへの参照を取得したら、コレクションのAddSlide
メソッドを使用します。これは、オブジェクトを 2 番目の引数として受け取ります (質問で使用し、列挙値を取る とは対照的です)。Slides
CustomLayout
Slides.Add
PpSlideLayout
以下は、カスタム レイアウトを名前で取得するためのヘルパー メソッドと、必要に応じて使用する例です。
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