2012-06-29 7 views
3

나는 VB6 애플리케이션을 수년간 운영하고 있습니다. 이 응용 프로그램은 XLS 파일을 만들기 위해 과거 Excel 2003을 항상 참조합니다. 이제 2003 대신 Excel 2010을 사용하고 싶습니다. 따라서 별도의 dev 컴퓨터에 Excel 2010 만 설치하고 vb6 프로젝트를로드하십시오.VB6 프로젝트에서 Excel 2003을 Excel 2010으로 대체하는 방법

응용 프로그램을 실행할 때 'Microsoft Excel 10.0 Object Library'가 누락 된 오류가 발생했습니다. Excel 2010만이이 컴퓨터에 설치되고 Excel 2003은 더 이상 설치되지 않았기 때문에 사실입니다.

문제는 올바른 참조를 원할 때 'Microsoft Excel 14.0 Object Library'또는 이 참조를 대체하는 것과 동등한 것.

의견이 있으십니까?

감사합니다.

+0

[나를위한 작품] (http://i.stack.imgur.com/4Uy6k.png). 다시 설치하십시오. – GSerg

+1

14 첫 번째 장소에서 10 int와 역 호환이 가능합니다. 그것은 사무실의 64 비트 버전이 아닙니까? – Deanna

+0

10은 이전 버전과 호환되지만 Excel에서는 사용할 수 있도록 프로젝트에서 참조해야합니다. – Bronzato

답변

2

초기 바인딩 된 참조는 다른 Excel 버전을 가진 사용자에게 배포되는 응용 프로그램에서 문제를 일으키기 위해 "바운드"됩니다.

가장 늦은 버전의 Excel에 후기 바인딩 및 코딩을 사용하면 지원할 수 있습니다. 예를 들어 Excel 2000을 지원하는 경우 응용 프로그램은 Excel 2000에서 지원되는 메서드 만 사용합니다.

그러나 코드가 런타임에 바인딩 된 경우 모호한 메서드 호출을 사용하고 로컬 버전을 검색하여 운영.

예 : (즉 Object에서 파생 된) 코드 늦은 바인딩되어 있기 때문에

Dim excelVersion As Long 
Dim xl As Object 

' get a reference to Excel.Application maybe from AddinInstance_OnConnection()? 
excelVersion = Val(xl.Version) 

Select Case excelVersion 
Case 11 ' Excel 2003 
    ' Excel 2003-only methods here 
    ' ex: xl.FileSearch 
Case 12 ' Excel 2007 
    ' Excel 2007-only methods here 
Case 14 ' Excel 2010 
    ' Excel 2010-only methods here 
    ' ex: something with Slicers 
End Select 

, 나는 단지 엑셀 2010 년에 유효한 방법을 지정할 수 있으며, 코드는 여전히 컴파일합니다. 코드가 Excel 2003에 초기 바인딩되어 있으면 컴파일되지 않습니다. 런타임에 나는 버전을 결정하여 사용할 메소드를 결정합니다.

Excel 2010 관련 기능을 사용하는 경우 다른 버전의 응용 프로그램을 컴파일하는 것도 좋습니다. 가능한 경우에만 당신 만 알 수 있습니다.

또한이 답변을 작성한 후에 생각해 보았지만 앱에서 Excel 2010을 참조 할 수없고 이전 버전의 Excel이 설치된 컴퓨터에 Excel 2010이 설치되어있는 경우 참조가 자동으로 조정되지 않습니다. Excel 버전이 설치되어 있습니까?