【发布时间】:2020-07-04 04:29:50
【问题描述】:
我正在尝试创建一个新的 PowerPoint 插件。我遇到了一个问题,我想确定是否对于幻灯片 1 上的给定形状,下一张幻灯片上是否也存在相同的形状。
有没有一种方法可以比较不同幻灯片中的形状并确定它们是否相同?
我大概可以比较类型、尺寸、文本和其他类似的属性,但这可能不是解决这个问题的正确方法。有没有更好的方法来做到这一点?
【问题讨论】:
标签: vba powerpoint
我正在尝试创建一个新的 PowerPoint 插件。我遇到了一个问题,我想确定是否对于幻灯片 1 上的给定形状,下一张幻灯片上是否也存在相同的形状。
有没有一种方法可以比较不同幻灯片中的形状并确定它们是否相同?
我大概可以比较类型、尺寸、文本和其他类似的属性,但这可能不是解决这个问题的正确方法。有没有更好的方法来做到这一点?
【问题讨论】:
标签: vba powerpoint
如果符合您的条件,这样的内容将从另一张幻灯片返回“相同”的形状。如果您愿意,您可以让它返回 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 是否相同。
【讨论】:
对您而言,什么是“相同”形状? 所有形状都有不同的 ID,因此您无法比较它们,但您可以比较大小、位置(Shape.Width、Shape.Height 等)以及内容(图表、表格或文本?)。 如果有足够多的属性相等,它们可能会被认为是相等的。
【讨论】: