是否可以检查一个PowerPoint演示文稿中的幻灯片是否与另一个套牌中的幻灯片相同?

时间:2016-08-30 11:59:24

标签: vba powerpoint checksum

我需要能够确定两个演示文稿中的(某些)幻灯片是否相同。基本上每月更新一次主演示文稿,并存档以前的版本。幻灯片顺序保持不变,只是可能的幻灯片内容已更改。麻烦是......

deck1.Slides(i)=deck2.Slides(i)

......没有工作,而且......

deck1.Slides(i).SlideID=deck2.Slides(i).SlideID

...即使幻灯片内容已更改,也会返回相同的值。

我想知道校验和幻灯片是否可行,但我还没有找到任何可以实现此目的的东西 - 我遇到的VBA校验和例程包括仅用于文本字符串。校验和幻灯片或对象是否可能,或者我错过了一些明显的东西?

1 个答案:

答案 0 :(得分:0)

虽然这绝不是一个可随时部署的解决方案,但这可能会提供一个起点,前提是您的具体任务是在看似相同的演示文稿中检查已更改的文本内容。

我将其缩小到比较幻灯片1上文本框(形状类型14)的文本内容以进行此演示。

Sub Neu()
    Dim ppt As New PowerPoint.Application

    Dim i As Integer, j As Integer        
    i = 1
    For j = 1 To ppt.Presentations(1).Slides(i).Shapes.Count

        If ppt.Presentations(1).Slides(i).Shapes(j).Type = 14 And _
            Presentations(2).Slides(i).Shapes(j).Type = 14 Then _            
                Debug.Print _
                    ppt.Presentations(1).Slides(i).Shapes(j).TextFrame.TextRange.Text = _
                    Presentations(2).Slides(i).Shapes(j).TextFrame.TextRange.Text

    Next j
End Sub

一般说明:

  • 这显然不能解释更改的格式或位置。
  • 只要在其中一张幻灯片中添加了新的形状,我就会发现一些问题。
  • Afaik,在添加新形状时应该有Shape(Index) = Shapes.Count+1,但你永远不会知道人们对你做了什么 呈现...

希望有人想出一个更优雅的方法来解决这个问题!