将早期绑定代码转换为后期绑定

时间:2011-03-17 15:50:09

标签: vba com vb6 esri late-binding

我经常在VBA和VB6中编写早期绑定代码来自动化办公应用程序(Word,Excel等),然后将其切换到后期绑定以处理这些应用程序的多个版本。我正在尝试做同样的事情,但我正在自动化ESRI ArcMap GIS应用程序,而我过去使用的概念似乎并没有翻译。


以下代码正确运行:

Sub EarlyBinding()
Dim ArcMap As esriArcMapUI.MxDocument

    Set ArcMap = GetObject("C:\Users\Mike\Downloads\Assessment Mapping.mxd", _
                           "esriArcMapUI.MxDocument")
    Debug.Print ArcMap.Title
End Sub

但是此代码失败,对象不支持Debug.Print行上的此属性或方法

Sub LateBinding()
Dim ArcMap As Object

    Set ArcMap = GetObject("C:\Users\Mike\Downloads\Assessment Mapping.mxd", _
                           "esriArcMapUI.MxDocument")
    Debug.Print ArcMap.Title

End Sub

MS Office应用程序是否有一些特殊之处,它们通常比COM服务器更好地支持这种方法?或者他们支持这种方法的ESRI应用程序有什么特别之处?

1 个答案:

答案 0 :(得分:4)

Esri对象最有可能无法正确支持IDISPATCH。您可能会尝试使用CALLBYNAME,但我猜这不起作用,因为我相信它也可以通过IDispatch传播。