我经常在 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
但是这段代码失败了对象不支持此属性或方法 on the Debug.Print
line:
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 应用程序的一些特别之处do not支持这种做法吗?
Esri 对象很可能未正确支持 IDISPATCH。您可以尝试 CALLBYNAME,但我猜这也行不通,因为我相信它也通过 IDispatch 进行引导。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)