6

新しい PowerPoint スライドを作成するための次の VBA コードがあります。

longSlideCount = ActivePresentation.Slides.Count

With ActivePresentation.Slides
    Set slideObject = .Add(longSlideCount + 1, ppLayoutTitle)
End With

...「ppLayoutTitle」タイプの新しいスライドを挿入しますが、「スライド マスター ビュー」でカスタム レイアウトを作成し、その特定のスライド テンプレートをプレゼンテーションに挿入できるかどうか疑問に思っています。

前もって感謝します!!!

4

1 に答える 1

14

すべてのカスタム レイアウトは、オブジェクトのプロパティのCustomLayoutsコレクションを通じて VBA 経由でアクセスできます。カスタム レイアウトを作成するときは、意味のある名前を付けます。その後、コレクションから取得できます。Microsoft は名前によるルックアップを実装していないようです。そのため、コレクションを繰り返し処理して、正しい名前のオブジェクトを見つける必要があります。SlideMasterPresentationCustomLayoutsCustomLayout

CustomLayout目的のオブジェクトへの参照を取得したら、コレクションのAddSlideメソッドを使用します。これは、オブジェクトを 2 番目の引数として受け取ります (質問で使用し、列挙値を取る とは対照的です)。SlidesCustomLayoutSlides.AddPpSlideLayout

以下は、カスタム レイアウトを名前で取得するためのヘルパー メソッドと、必要に応じて使用する例です。

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
于 2014-01-08T14:36:05.183 に答える