C#PowerPoint互操作:获取占位符文本框的默认文本

C#PowerPoint互操作:获取占位符文本框的默认文本,c#,vsto,powerpoint,office-interop,C#,Vsto,Powerpoint,Office Interop,有人知道如何在powerpoint中获取占位符形状的默认文本吗 我在主控中定义了一个带有默认文本的占位符文本形状(“在此处输入一些文本…”)。 可以在演示文稿的幻灯片中覆盖文本。 我想得到的文字“输入一些文字在这里…”的代码!!! 有人能帮忙吗。这是VBA来做这项工作的。语言翻译留给精明的读者作为练习: Dim osh As Shape Dim oSl As Slide Dim oLyt As CustomLayout Dim x As Long ' VBA Long, not a .NET

有人知道如何在powerpoint中获取占位符形状的默认文本吗

我在主控中定义了一个带有默认文本的占位符文本形状(“在此处输入一些文本…”)。

可以在演示文稿的幻灯片中覆盖文本。

我想得到的文字“输入一些文字在这里…”的代码!!!
有人能帮忙吗。

这是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不提供在幻灯片上的布局占位符和文本框之间获取引用的任何可能性:-(同样的一般策略也适用于此。但让我问一下目标是什么。我有一个在主控中定义了占位符的布局,需要基于布局的相应幻灯片文本框,因为我必须验证这个。