Domanda

Ho spesso scritto il codice in VBA e VB6 per automatizzare le applicazioni di Office (Word, Excel, ecc) early-binding poi passato a late-binding di gestire più versioni di tali applicazioni. Sto cercando di fare la stessa cosa, ma sto automatizzando un'applicazione GIS di ESRI ArcMap ed i concetti che ho usato in passato non sembrano essere la traduzione.


Il seguente codice viene eseguito correttamente:

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

Ma questo codice non riesce con L'oggetto non supporta questa proprietà o metodo sulla linea 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

C'è qualcosa di speciale in MS Office applicazioni che sostengono questo approccio migliore di server COM in generale? O qualcosa di speciale ESRI applicazioni che non supportano questo approccio?

È stato utile?

Soluzione

E 'più probabile che l'oggetto Esri non sta sostenendo IDispatch correttamente. Si potrebbe provare CallByName, ma credo che non funziona o perché credo che vettori tramite IDispatch pure.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top