早期結合コードを遅延結合に変換します
-
27-10-2019 - |
質問
私はしばしば、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を介してベクトルもそうだと思うので、それもうまくいかないと思います。
所属していません StackOverflow