Вам нужно было бы перебрать все заполнители на слайде, определить тип каждого из них, а затем проверить, заполнен ли он ожидаемым форматом. Их 18 PpPlaceholderType
, поэтому вам придется настроить их все, но ниже приведен пример того, что вы можете сделать, чтобы проверить, используется ли заполнитель.
Sub CheckPlaceholders()
Dim ap As Presentation: Set ap = ActivePresentation
Dim sl As Slide: Set sl = ap.Slides(2)
Dim shs As Shapes: Set shs = sl.Shapes
Dim ph As Placeholders: Set ph = shs.Placeholders
Dim p As Shape
For Each p In ph
Select Case p.Type
Case PpPlaceholderType.ppPlaceholderHeader
If p.TextFrame.HasText Then
Debug.Print "This Placeholder is in use"
End If
Case PpPlaceholderType.ppPlaceholderChart
If p.HasChart Then
Debug.Print "This Placeholder is in use"
End If
End Select
Next
End Sub
Чтобы вставить, скажем, изображение, чтобы оно не попало в заполнитель, я нашел единственный способ создать цикл для добавления изображений, пока одно из них не вышло из заполнителя, а затем удалить уже вставленные .
Sub AddPicture()
Dim pic As String
pic = "C:\Users\Me\Desktop\beigeplum.jpg"
Dim ap As Presentation: Set ap = ActivePresentation
Dim sl As Slide: Set sl = ap.Slides(1)
Dim sh As Shape
Do
Set sh = sl.Shapes.AddPicture(pic, msoFalse, msoTrue, 1, 1)
sh.Tags.Add "MYPICTURE", 0
Loop Until sh.Type <> 14
Dim p As Shape
For Each p In sl.Shapes
If p.Type = 14 Then
If p.Tags.count > 0 Then
If p.Tags.Name(1) = "MYPICTURE" Then
p.Delete
End If
End If
End If
Next
End Sub