Frage

Ich habe oft frühbindende Code in VBA und VB6 geschrieben, um Office-Anwendungen (Word, Excel usw.) zu automatisieren, und schaltete ihn dann auf die verspätete Bindung, um mehrere Versionen dieser Anwendungen zu verarbeiten. Ich versuche das Gleiche zu tun, aber ich automatisiere eine Esri Arcmap GIS -Anwendung und die Konzepte, die ich in der Vergangenheit verwendet habe, scheinen nicht zu übersetzen.


Der folgende Code wird korrekt ausgeführt:

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

Aber dieser Code schlägt fehl Objekt unterstützt diese Eigenschaft oder Methode nicht auf der Debug.Print Linie:

Sub LateBinding()
Dim ArcMap As Object

    Set ArcMap = GetObject("C:\Users\Mike\Downloads\Assessment Mapping.mxd", _
                           "esriArcMapUI.MxDocument")
    Debug.Print ArcMap.Title

End Sub

Gibt es etwas Besonderes an MS Office -Apps, die diesen Ansatz besser unterstützen als COM -Server im Allgemeinen? Oder etwas Besonderes an Esri -Apps, die sie unterlassen Sie diesen Ansatz unterstützen?

War es hilfreich?

Lösung

Es ist höchstwahrscheinlich, dass das ESRI -Objekt IDispatch nicht ordnungsgemäß unterstützt. Sie könnten versuchen, CallByName zu machen, aber ich vermute, das funktioniert auch nicht, weil ich glaube, dass es auch durch Idispatch Vektoren ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top