【问题标题】:Identify identical shapes on different slides in PowerPoint 2010 programmatically以编程方式识别 PowerPoint 2010 中不同幻灯片上的相同形状
【发布时间】:2020-07-04 04:29:50
【问题描述】:

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

有没有一种方法可以比较不同幻灯片中的形状并确定它们是否相同?

我大概可以比较类型、尺寸、文本和其他类似的属性,但这可能不是解决这个问题的正确方法。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: vba powerpoint


    【解决方案1】:

    如果符合您的条件,这样的内容将从另一张幻灯片返回“相同”的形状。如果您愿意,您可以让它返回 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 是否相同。

    【讨论】:

      【解决方案2】:

      对您而言,什么是“相同”形状? 所有形状都有不同的 ID,因此您无法比较它们,但您可以比较大小、位置(Shape.Width、Shape.Height 等)以及内容(图表、表格或文本?)。 如果有足够多的属性相等,它们可能会被认为是相等的。

      【讨论】:

      • 相同的意思是指在另一张幻灯片上复制的相同形状。所以它可以是任何东西,从相同的图像到具有相同尺寸和文本的文本框。
      • 据我所知,这种比较是不可能的。比较元素的唯一方法是比较它们的属性。但是,如果它是如此通用,那就很难做到——如果可能的话,缩小你的比较需求。为什么你必须这样做?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多