2

我经常在 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 应用程序有什么特别之处?

4

1 回答 1

4

Esri 对象很可能没有正确支持 IDISPATCH。您可能会尝试 CALLBYNAME,但我猜这也行不通,因为我相信它也可以通过 IDispatch 引导。

于 2011-03-17T15:58:05.820 回答