Question

Je l'ai souvent écrit un code contraignant au début de VBA et VB6 pour automatiser des applications bureautiques (Word, Excel, etc.) puis mis à la liaison tardive pour gérer plusieurs versions de ces applications. Je suis en train de faire la même chose mais je suis automatisant une application SIG ESRI ArcMap et les concepts que je l'ai utilisé dans le passé ne semble pas traduire.


Le code suivant fonctionne correctement:

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

Mais ce code échoue avec Cet objet ne gère pas cette propriété ou méthode sur la ligne de 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

Y at-il spécial quelque chose MS Office apps qu'ils soutiennent cette approche mieux que les serveurs COM en général? Ou quelque chose de spécial applications Esri qu'ils ne pas soutiennent cette approche?

Était-ce utile?

La solution

Il est fort probable que l'objet Esri ne supporte pas Idispatch correctement. Vous pouvez essayer CallByName, mais je devine que cela ne fonctionne pas, soit parce que je crois que les vecteurs par IDispatch ainsi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top