以编程方式在PowerPoint 2010中的不同幻灯片上标识相同的形状

时间:2013-09-02 10:22:31

标签: powerpoint powerpoint-vba

我正在尝试创建一个新的PowerPoint插件。我遇到了一个问题,我想确定幻灯片1上的给定形状是否也存在于下一张幻灯片上。

有没有办法比较不同幻灯片的形状并确定它们是否相同?

我可以比较类型,尺寸,文本和其他类似属性,但这可能不是解决此问题的正确方法。有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

什么是“相同”形状适合你? 所有形状都有不同的ID,所以你无法比较它们,但你可以比较大小,位置(Shape.Width,Shape.Height等)和内容(图表,表格或文本?)。 如果足够的属性相等,则可以认为它们是相等的。

答案 1 :(得分:0)

如果满足您的标准,这样的东西将从另一张幻灯片返回“相同”的形状。如果您愿意,可以让它返回True / False:

Function SameShape(oThisShape As Shape, oOtherSlide As Slide) As Shape

    Dim oSh As Shape

    For Each oSh In oOtherSlide.Shapes
        If oSh.Type = oThisShape.Type Then
            If oSh.Height = oThisShape.Height Then
                If oSh.Width = oThisShape.Width Then
                    ' other conditions here as required
                    Set SameShape = oSh
                    Exit Function
                End If
            End If
        End If
    Next

End Function

一个警告:如果形状为.Type = msoPlaceholder,您还需要查看.PlaceholderFormat.ContainedType是否相同。