문제

방금 PowerPoint 내 VBA에서 호출되는 DLL을 업데이트했습니다. 모든 개발은 잘 진행되었지만 다른 사용자 컴퓨터에 배포하려고 할 때 디버그하는 방법을 모르는 문제가 발생합니다.

발생하는 일은 .NET 객체가 VBA에서 생성 될 때 반환되는 참조는 잘못된 객체에 대한 것이므로 다음 줄은 메소드를 찾을 수없는 상태에서 실패합니다.

Dim myObj As Foo.Bar

Public Sub RefreshData()

//'instantiate object
Set myObj = New Foo.Bar   
//'call a method
myObj.HelloWorld

마지막 줄은 실패합니다 런타임 오류 '438'객체는이 속성 또는 방법을 지원하지 않습니다. MyOBJ는 "foo.bar"대신 "ronge.type"유형의 유형이라는 사실로 인해 발생합니다.

"잘못. 타입"도 어셈블리에 있으므로 유형 라이브러리에 문제가 있다고 가정하지만 재생을 시도했지만 (Regasm /Codebase /TLB MyLib.dll을 사용하여) 도움이되지 않았습니다.

나는 이것을 더 이상 진단하는 방법을 모른다. 바라건대 누군가가 이런 종류의 문제를 진단하는 방법에 대한 몇 가지 단계를 나열 할 수 있기를 바랍니다.

도움이 되었습니까?

해결책 2

이 경우 TLB 파일에 대한 참조를 제거한 다음 다시 추가하면 문제가 해결되었습니다.

불행히도, 나는 일반적인 해결책이나 행동에 대한 설명을 찾지 못했습니다.

다른 팁

자동으로 생성 된 GUIDS (클래스, 인터페이스, 유형 라이브러리)의 문제 - DLL을 변경하면 안내가 변경되었습니다. 오래된 TLB는 오래된 안내서를 사용했기 때문에이를 참조함으로써 이전 안내서를 유형 이름과 연관 시켰으므로 코드는 새로운 안내서와 작동하지 못했습니다. 내가 겪은 대부분의 VB (6 및 .NET) 코드는이 문제가 있으므로 DLL이 VB로 작성되면 아마도 IT 일 것입니다 (그리고 당신의 작업은이 이론을 뒷받침합니다).

그것이 문제라면, 일반적인 해결책은 안내를 명시 적으로 설정하는 것입니다. 버전이 변경 될 때 안내를 변경해야하기 때문에 많은 유형이 있다면 약간 성가신 일입니다. 수동으로 수행하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top