Vba Office 2007和2003之间对象名称的更改
为了实现自动化,我为2007年Powerpoint文件中的对象指定了对象名称。我在另一台有Office2003的机器上运行了自动代码,发现对象名称在那里动态变化,因此自动代码抛出了一个错误 我尝试在那台机器上使用VBA再次重命名对象,它在调试时工作。但是当我重新运行自动化代码时,会出现错误Vba Office 2007和2003之间对象名称的更改,vba,powerpoint,powerpoint-2007,Vba,Powerpoint,Powerpoint 2007,为了实现自动化,我为2007年Powerpoint文件中的对象指定了对象名称。我在另一台有Office2003的机器上运行了自动代码,发现对象名称在那里动态变化,因此自动代码抛出了一个错误 我尝试在那台机器上使用VBA再次重命名对象,它在调试时工作。但是当我重新运行自动化代码时,会出现错误 这是两个版本之间的兼容性问题还是其他问题?这是我对Word不同版本的问题。通常,早期版本可能不支持PowerPoint最高版本的代码。但有时代码是有效的,但它所引用的方法可能会导致问题 我建议使用后期绑定(…
这是两个版本之间的兼容性问题还是其他问题?这是我对Word不同版本的问题。通常,早期版本可能不支持PowerPoint最高版本的代码。但有时代码是有效的,但它所引用的方法可能会导致问题 我建议使用后期绑定(…作为对象)来解决这个问题 举例说明: 不同之处在于在运行时用代码绑定对象库。您不使用工具引用。诸如此类:
Sub ppt()
Dim olApp As Object
Set olApp = CreateObject("PowerPoint.Application")
End Sub
“对象名称”是指形状名称吗?即形状的名称属性?这看起来确实是辆马车
考虑在需要处理的形状上使用标记。例如,假设在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被声明为对象而不是幻灯片,因此您可以传递函数幻灯片、母版、布局等。您能否帮助我了解您提到的后期绑定概念?参考一下可能会有所帮助。该方法还能确保代码正常工作吗?我已经编辑了我的答案,请记住区别在于对象的创建(CreateObject(“PowerPoint.Application”))形状名称可能会更改的原因:PPT 2003无法从2007年开始打开PPTX文件,除非您已安装(我认为称之为)兼容性工具包,它执行从PPTX到PPT格式的实时转换。它可能正在创建所有新的形状/对象,并且在创建时可能不会保留原始形状名称。