访问PowerPoint中的幻灯片上的活动幻灯片/访问活动形状 - VSTO

时间:2012-01-24 12:17:27

标签: vsto powerpoint

有没有办法使用VSTO访问PowerPoint演示文稿中当前活动的幻灯片?如果我能获得当前活跃的Shape,也会很好。我知道如何遍历幻灯片/形状,但我找不到任何属性来判断幻灯片/形状是否有效:

        foreach (Slide slide in presentation.Slides)
        {
            foreach (Shape shape in slide.Shapes)
            {
            }
        }

1 个答案:

答案 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梯子爬到幻灯片上。