为了自动化目的,我已将对象名称分配给2007年powerpoint文件中的对象。我在另一台具有office 2003的计算机上运行自动代码,发现对象名称在那里动态变化,因此自动代码会抛出错误。
我尝试使用VBA在该计算机中重新命名对象,并且在调试时可以正常工作。但是当我重新运行自动化代码时,错误就会出现。
这是两个版本之间的兼容性问题还是其他什么?请尽快帮忙。
由于
答案 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,因此您可以传递幻灯片,大师,布局等功能。