【发布时间】:2011-07-17 12:38:02
【问题描述】:
我经常在 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 应用程序有什么特别之处,他们不支持这种方法?
【问题讨论】:
-
重新标记 w/o VB6。这里没有 VB6 问题。
-
我标记了这个 VB6 因为与 VBA 重叠。我假设这里讨论的概念同样适用于 VBA 和 VB6。如果我的假设有误,请纠正我。
-
你说得对,VBA 和 VB6 几乎是一回事,只是 VBA 没有编译器可以编译为本机代码,只有伪代码引擎。
标签: vba com vb6 esri late-binding