C#PowerPoint Interop:获取占位符文本框的默认文本

时间:2014-02-05 16:01:53

标签: c# vsto powerpoint office-interop

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

我使用默认文本(“在此处输入一些文字...”)在主文件中定义了一个占位符文本形状。 Placeholder default text

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

我希望通过代码获取文本“在这里输入一些文字......” 有人可以帮忙。

1 个答案:

答案 0 :(得分:0)

这是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个匹配的占位符。