有没有办法使用VSTO访问PowerPoint演示文稿中当前活动的幻灯片?如果我能获得当前活跃的Shape,也会很好。我知道如何遍历幻灯片/形状,但我找不到任何属性来判断幻灯片/形状是否有效:
foreach (Slide slide in presentation.Slides)
{
foreach (Shape shape in slide.Shapes)
{
}
}
答案 0 :(得分:8)
查看.Selection对象。
它有一个.Type属性,告诉你选择了什么。如果是SlideRange,则选择可能是一个或多个幻灯片;由你来决定如果> 1,但如果为1,则.Selection.SlideRange(1)为您提供所选幻灯片的参考。
.Type可能会返回ShapeRange,在这种情况下,如果选择了多个形状,则使用.Selection.ShapeRange(1)来获取当前形状或范围中的第一个形状。形状的.Parent属性返回对形状所在的幻灯片的引用(幻灯片,母版,布局等)。
如果.Type返回TextRange,则必须沿父链向上走几步;文本的父级是文本范围,textrange的父级是包含的形状,形状的父级是形状所在的幻灯片。
这在某些版本的PowerPoint 2007中可能会崩溃(我记得它在SP1或2之前已经破了),并且在2010年选择表格中的文本时它仍然被打破。您可以操作文本,可以访问包含文本的形状的某些属性,但不是全部,并且您无法将.Parent梯子爬到幻灯片上。