На самом деле ActivePresentation
должно быть myPresentation
, Excel не должен знать ActivePresentation
. Также вы должны указать myPresentation
в качестве параметра, иначе это пустая переменная в вашей функции.
Если вы посмотрите на метод Slides.AddSlide (PowerPoint) , вы увидите, что вторым параметром является не index
, а тип CustomLayout
, поэтому ваша функция должна возвращать макет вместо index
.
Public Function PPLayout(clayout As String, myPresentation As PowerPoint.Presentation) As PowerPoint.CustomLayout
Dim olay As PowerPoint.CustomLayout
For Each olay In myPresentation.SlideMaster.CustomLayouts
If olay.Name = clayout Then
Set PPLayout = olay
Exit Function
End If
Next olay
End Function
И используйте это как
Debug.Print PPLayout("CLayout1", myPresentation).Index
или
myPresentation.Slides.AddSlide(myPresentation.Slides.Count + 1, PPLayout("CLayout1", myPresentation))