質問

私はしばしば、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アプリについて特別な何か しない このアプローチをサポートしますか?

役に立ちましたか?

解決

ESRIオブジェクトがIdispatchを適切にサポートしていない可能性が最も高いです。 CallByNameを試してみるかもしれませんが、IdisPatchを介してベクトルもそうだと思うので、それもうまくいかないと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top