Вам нужно будет пропустить все заполнители на слайде, определить тип каждого из них, а затем проверить, заполнен ли он ожидаемым форматом. Есть 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
Я знал об этом решении, я искал более элегантный. Что касается автоматического использования заполнителя, просто попробуйте добавить объект к слайду с макетом - ppLayoutObject сказать через activeSlide.Shapes.AddPicture (...); – Dudi
Да, с PPT2007 все стало немного странно с заполнителями. Решение, о котором вы упоминали в своем другом сообщении, является одним из способов сделать это, но вы правы, у него есть обратные линии, когда старый slidelayout повторно применяется. Единственный способ, который я нашел, - это хакка. См. Обновление выше. –
При использовании заполнителя это примерно так же изящно, как и получается :( –