문제

Word-VBA를 사용하는 Access-VBA 응용 프로그램이 있습니다.내 로컬 컴퓨터에서 응용 프로그램을 실행하는 동안 잘 작동합니다.일단 다른 사람들로 이동하면 (액세스 및 단어의 동일한 버전) Word의 VBA 부분에 대해 발생할 때 충돌합니다.document.open 또는 .saveas2와 같은 명령은 실패합니다. 예를 들어 Method 'SaveAs2' of object failed.

또한 응용 프로그램에서 참조 한 라이브러리가 다른 최종 사용자가 요구하는 라이브러리가 필요합니다.나는 라이브러리와 함께 그리고 그 지점에서 .jar / .exe / etc에 항상 포함되어 있지만, 응용 프로그램을 항상 다시 컴파일하려고하는 다른 컴퓨터로 응용 프로그램을 이동할 때 보이는 것 같습니다.

는 VBA에서 정통하지 않으므로 실패한 Word-VBA 기능이 참조 오류, 다른 아이디어로 인해 추측됩니다.

도움이 되었습니까?

해결책

VBA는 실제로 COM 객체 입니다. 일반적으로 DLL 파일로 패키지 됨 ...에 요청할 때 런타임 (아직없는 경우)에서 동적으로 인스턴스화되는 객체입니다. Windows가 Windows에서 메모리에로드되며 프로그램은 COM 표준을 사용하여 해당 메소드와 메서드를 호출하고 속성을 가져 오거나 설정하거나 설정합니다 (프로세스 간 통신). 일반적으로 이들과 상호 작용하는 두 가지 방법이 있습니다 : 조기 바인딩 및 늦은 바인딩.

조기 바인딩을 사용하면 VBA IDE가 자동 완성 및 일부 컴파일 타임 오류 검사를 제공 할 수있는 코드를 작성하는 동안 라이브러리에 대한 참조를 추가합니다. "새로 만들기"키워드와 객체 이름을 직접 입력하여 객체를 인스턴스화합니다. 그러나 조기 바인딩에는 특정 DLL 및 특정 버전의 인터페이스를 선택해야합니다. 사용자 중 하나가없는 특정 인터페이스 버전을 참조하는 경우 문제가 발생할 수 있습니다.

늦은 바인딩을 사용하면 CreateObject 또는 getObject를 사용하여 객체를 인스턴스화하여 Windows에서 이름으로 요청합니다. Windows는 이름을 닫습니다 < / a> 및 객체에 대한 참조를 반환합니다. 코드의 변수는 단순히 객체 일 뿐이며 컴파일러가 원하는 모든 메소드 이름을 입력하고 컴파일 타임 경고를 제공하지 않기 때문에 단순히 객체이며 호출 메서드가 약간 위험합니다. 이것은 잘 설정된 방법을 호출하고 새로운 것이 아니거나 더 이상 아무것도 아닌 경우 코드가 사용자의 버전에 관계없이 작동 할 수있는 장점이 있습니다.

가져 오는 중 오류가 발생하면 SaveAs2 가 Office 2010에 추가되었습니다.

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