我经常在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应用程序有什么特别之处?
答案 0 :(得分:4)
Esri对象最有可能无法正确支持IDISPATCH。您可能会尝试使用CALLBYNAME,但我猜这不起作用,因为我相信它也可以通过IDispatch传播。