2011-03-17 2 views
2

저는 종종 VBA 및 VB6에서 초기 바인딩 코드를 작성하여 Office 응용 프로그램 (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 앱에 대해 특별한 점이 y 일반적으로 COM 서버보다이 방법을 더 잘 지원합니까? 아니면 의 ESRI 앱에 대한 특별한 점이 없습니까?이 접근 방식을 지원합니까?

+0

VB6 제외 태그가 붙습니다. 여기에 VB6 질문이 없습니다. – Bob77

+1

VBA와 겹치기 때문에이 VB6에 태그를 지정했습니다. 여기에서 논의 된 개념은 VBA와 VB6 모두에 동일하게 적용된다고 가정했습니다. 제 생각이 틀리면 저를 시정하십시오. – mwolfe02

+0

맞습니다. VBA와 VB6는 사실상 똑같습니다. VBA만이 원시 코드로 컴파일하는 컴파일러가 없습니다. 단지 psuedocode 엔진입니다. – DarinH

답변

4

Esri 개체가 IDISPATCH를 제대로 지원하지 않을 가능성이 큽니다. CALLBYNAME을 시도해 볼 수도 있지만, IDispatch를 통해 벡터가 있다고 믿기 때문에 그 중 하나가 작동하지 않을 것이라고 추측합니다.

+0

따라서 ESRI 개체가 IDISPATCH를 지원하지 않으면 첫 번째 예제 (초기 바인딩 사용)가 계속 작동 할 수 있습니까? – mwolfe02

+0

예, 초기 바인딩은 IDispatch를 통과하지 않으므로 해당 호출이 여전히 올바르게 작동해야합니다. 그건 좀 이상한 상황 이겠지만 확실히 가능합니다. IDISPATCH 만 지원하고 다른 인터페이스는 전혀 공개하지 않는 객체를 가질 수도 있습니다. 스크립팅 용도로만 사용되는 객체는 때로는 그런 식으로 동작하지만 더 이상 하나의 오른쪽을 생각할 수는 없습니다 ... – DarinH

+0

정보를 제공해 주셔서 감사합니다. – mwolfe02

관련 문제