Mark는 Excel 2002와 2003의 두 가지 버전을 사용하는 작업 환경에 있습니다. Excel 2003에서 매크로가 포함 된 통합 문서를 열고 Office 11의 VB 라이브러리를 설치 한 다음 나중에 다른 사람이 동일한 문서를 열려고하면 문제가 발생합니다. Excel 2002의 통합 문서. 매크로가 올바른 VBA 라이브러리 참조를 찾을 수 없어서 실행하려고하면 오류가 발생합니다. Mark는 VB 편집기로 이동하여 누락 된 VBA 라이브러리에 대한 참조를 지워서 수동으로 수정할 수 있다는 것을 알고 있지만 통합 문서가 Excel 버전을 자동으로 확인하고 그에 따라 VBA 라이브러리 참조를 업데이트하도록하는 방법이 있는지 궁금합니다.

이를 처리하는 한 가지 방법은 이전 버전의 Excel을 사용하여 통합 문서를 만들고 저장하는 것입니다. 이후 버전의 Excel에서 열면 VBA 라이브러리에 대한 참조가 자동으로 업데이트됩니다.

Excel은 업데이트가 이후 버전으로 이동하지만 이전 버전으로 이동하지는 않습니다.

그러나 이는 통합 문서를 이전 버전의 Excel에서 만든 경우에도 일단 열어서 이후 Excel 버전에서 저장하면 이전 버전의 사용자가 열 때 문제가 발생합니다.

일부 출처에 따르면 해결책은 “늦은 ​​바인딩”으로 알려진 것에 의존하는 것입니다. 이는 단순히 매크로가 저장 될 때가 아니라 런타임 동안에 만 특정 함수를 조회하도록 매크로가 작성되었음을 의미합니다. 이는 다음 Microsoft 기술 자료 문서에서 약간 참조됩니다.

http://support.microsoft.com/?kbid=244167

VBA 편집기를 열고 이전에 설정된 참조를 제거하여 후기 바인딩 기술을 시도 할 수 있습니다. 그런 다음 매크로 시작 부분에 다음과 유사한 코드를 추가합니다.

If Application.Version = "10.0" Then    'Excel 2002     Dim oExcel As Object    'Apply late binding     Set oExcel = CreateObject("Excel.Application")

End If If Application.Version = "11.0" Then    'Excel 2003     '     ' Add whatever references you want for Excel 2003     ' End If

매크로 끝에서 정의 된 개체 (예 : oExcel)를 Nothing으로 설정했는지 확인합니다. 여기에 제시된 것보다 더 강력한 코드의 좋은 예는 다음 기사에서 찾을 수 있습니다.

http://www.vbaexpress.com/kb/getarticle.php?kb_id=267 http://www.vbaexpress.com/kb/getarticle.php?kb_id=272

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (3340)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다.