Я часто писал код раннего связывания на VBA и VB6 для автоматизации офисных приложений (Word, Excel и т. д.), а затем переключал его на позднее связывание для обработки нескольких версий этих приложений. Я пытаюсь сделать то же самое, но я автоматизирую ГИС-приложение ESRI ArcMap, и концепции, которые я использовал в прошлом, похоже, не переводятся.
Следующий код работает правильно:
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, что они не поддерживают этот подход?