爲了自動化目的,我已將對象名稱分配給2007 PowerPoint文件中的對象。我在另一臺裝有office 2003的機器上運行自動代碼,發現對象名稱在那裏動態變化,因此自動化代碼會引發錯誤。Office 2007和2003之間的對象名稱更改
我試着在該機器上使用VBA重新命名對象,它在調試時工作。但是當我重新運行自動化代碼時,錯誤就會出現。
這是兩個版本之間的兼容性問題還是其他?請儘快幫忙。
謝謝
爲了自動化目的,我已將對象名稱分配給2007 PowerPoint文件中的對象。我在另一臺裝有office 2003的機器上運行自動代碼,發現對象名稱在那裏動態變化,因此自動化代碼會引發錯誤。Office 2007和2003之間的對象名稱更改
我試着在該機器上使用VBA重新命名對象,它在調試時工作。但是當我重新運行自動化代碼時,錯誤就會出現。
這是兩個版本之間的兼容性問題還是其他?請儘快幫忙。
謝謝
這是我的問題與Word的不同版本。通常,在早期版本下,可能不支持到最高版本的PowerPoint的代碼。但有時代碼可以工作,但它所指的方法可能會導致問題。
我建議使用後期綁定(...作爲對象)來解決這個問題
修改一個例子:
不同的是,你在運行時綁定的對象庫中的代碼。您不使用工具參考。這樣的事情:
Sub ppt()
Dim olApp As Object
Set olApp = CreateObject("PowerPoint.Application")
End Sub
「對象名稱」,你的意思是形狀名稱?即形狀的.Name屬性?這似乎是越野車。
考慮在需要使用的形狀上使用標籤。例如,假設而不是使用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」) ) –