Вот VBA, чтобы выполнить эту работу. Перевод на английский язык оставлен в качестве упражнения для проницательного читателя:
Dim osh As Shape
Dim oSl As Slide
Dim oLyt As CustomLayout
Dim x As Long ' VBA Long, not a .NET Long!
' for demo purposes, we'll work with a placeholder shape
' that I've selected
Set osh = ActiveWindow.Selection.ShapeRange(1)
' and in Real Life, you'd want to ensure that the
' shape really is a placeholder of the correct type
Set oSl = osh.Parent
Set oLyt = oSl.CustomLayout
For x = 1 To oLyt.Shapes.Count
If oLyt.Shapes(x).PlaceholderFormat.Type = osh.PlaceholderFormat.Type Then
Debug.Print oLyt.Shapes(x).TextFrame.TextRange.Text
End If
Next
Это не идеальный вариант; он просто приведет вас к первому заполнителю на макете, который имеет тот же тип заполнителя, что и форма, с которой вы работаете. У вас может быть несколько заполнителей на одном слайде и соответствующем макете, и в этом случае это может привести к неправильным результатам. Если вы хотите защититься от этого, вы можете проверить, есть ли другие заполнители одного и того же типа на родительском слайде, и если это N-го заполнителя, определите значение для N, а затем найдите N-й сопоставитель для компоновки.
Спасибо за ваш андерсер. К несчастью, это противоположное направление, в котором я нуждаюсь. Моя цель состояла в том, чтобы получить ссылку от заполнителя в макете в текстовое поле соответствующего заполнителя на слайде. Потому что нет «родного пути», моя идея состояла в том, чтобы получить его по умолчанию по умолчанию. Но это тоже невозможно. Не могу понять, почему Microsoft не предлагает никаких возможностей для получения ссылки между компоновщиком макета и текстовым полем на слайде. :-( – Tobias
Такая же общая стратегия будет работать для этого. Но позвольте мне спросить, какова цель. –
У меня есть макет с заполнителями, определенными в главном, и вам нужно соответствующее текстовое поле слайда на основе макета, потому что я должен подтвердите это. – Tobias