Office 2007和2003之间的对象名称更改

时间:2012-05-13 06:01:20

标签: vba powerpoint-vba powerpoint-2007

为了自动化目的,我已将对象名称分配给2007年powerpoint文件中的对象。我在另一台具有office 2003的计算机上运行自动代码,发现对象名称在那里动态变化,因此自动代码会抛出错误。

我尝试使用VBA在该计算机中重新命名对象,并且在调试时可以正常工作。但是当我重新运行自动化代码时,错误就会出现。

这是两个版本之间的兼容性问题还是其他什么?请尽快帮忙。

由于

2 个答案:

答案 0 :(得分:1)

这是我与Word不同的问题。通常,早期版本可能不支持最高版本的PowerPoint代码。但有时候代码会起作用,但它所引用的方法可能会引起问题。

我建议使用后期绑定(... As Object)来解决问题

修订示例:

不同之处在于您在运行时在代码中绑定对象库。您不使用工具参考。类似的东西:

Sub ppt()

    Dim olApp As Object

    Set olApp = CreateObject("PowerPoint.Application")

End Sub

答案 1 :(得分:0)

“对象名称”是指形状名称?即形状的.Name属性?这似乎是错误的。

考虑在需要使用的形状上使用标签。例如,假设在oSh中引用您的形状,而不是使用oSh.Name =“记住我”,请执行以下操作:

oSh.Tags.Add "ShapeName","RememberMe"

然后,当您需要获取对形状的引用时,请使用如下函数:

Function ShapeNamed(oSl as Object, sName as string) as Shape
  Dim oSh as Shape
  For Each oSh in oSl.Shapes
    If oSh.Tags("ShapeName") = sName Then
      Set ShapeNamed = oSh
      Exit Function
    End If
  Next
End Function

oSl被声明为Object而不是Slide,因此您可以传递幻灯片,大师,布局等功能。