0

出于自动化目的,我已将对象名称分配给 2007 Powerpoint 文件中的对象。我在另一台装有 office 2003 的机器上运行了自动化代码,发现对象名称在那里动态变化,因此自动化代码会引发错误。

我尝试使用 VBA 在该机器中再次重命名对象,并且它在调试时工作。但是当我重新运行自动化代码时会出现错误。

这是两个版本之间的兼容性问题还是其他问题?

4

2 回答 2

1

那是我对不同版本的 Word 的问题。通常,早期版本可能不支持 PowerPoint 最高版本的代码。但有时代码可以工作,但它所引用的方法可能会导致问题。

我建议使用后期绑定(...作为对象)来解决问题

用一个例子进行修订:

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

Sub ppt()

    Dim olApp As Object

    Set olApp = CreateObject("PowerPoint.Application")

End Sub
于 2012-05-13T08:26:27.903 回答
0

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

考虑在需要处理的形状上使用标签。例如,假设在 oSh 中引用了您的形状,而不是使用 oSh.Name = "Remember me",请执行以下操作:

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,因此您可以传递函数 Slides、Masters、Layouts 等。

于 2012-05-13T22:26:07.513 回答