Использование объекта Powerpoint Shape в макросе Excel

Я пишу этот код VBA в Excel, который вносит изменения в файл PowerPoint. Все работает нормально, кроме того, что ниже. Когда я вызываю функцию FormatICTable, я получаю ошибку времени выполнения, то есть «Несоответствие типов». Мне кажется, что объект формы, который я передаю в качестве первого аргумента, создает проблему. Какие-либо предложения ?

Sub controlPPT()
    Dim PPT As Object
    Set PPT = CreateObject("PowerPoint.Application")
    Dim pres As Presentation
    With Application.FileDialog(1)
        .AllowMultiSelect = False
        .Show
        .Filters.Clear
        .Filters.Add "PPT files", "*.pptx"
        .FilterIndex = 1
        If .SelectedItems.Count > 0 Then
            PPT.Presentations.Open .SelectedItems(1)

            Dim sld As Slide

            Set pres = PPT.ActivePresentation
            For Each sld In pres.Slides
                sld.Select
                If sld.Shapes(1).TextFrame2.TextRange.Text = "Internal comparison" Then
                    Call FormatICTable(sld.Shapes(2), sld)
                End If
            Next

            pres.Save
            Set pres = Nothing
        End If
    End With
End Sub


Function FormatICTable(shp As Shape, sld As Slide)
    'My code here
End Function

person braceyourself    schedule 30.09.2014    source источник


Ответы (1)


Итак, я сам получил ответ. Объект Shape должен быть обозначен как PowerPoint.Shape в сигнатуре функции вместо использования только класса Shape.

Function FormatICTable(shp As PowerPoint.Shape, sld As Slide)
    'My code here
End Function
person braceyourself    schedule 30.09.2014
comment
@ Стив, почему это так, я понял, что иногда невыбор слайда может помешать правильной работе макроса при работе с объектами на этой странице. - person braceyourself; 01.10.2014