在我的VB6项目中将Excel 2003的引用replace为Excel 2010

我有一个VB6应用程序运行多年。 此应用程序过去总是引用Excel 2003来创buildXLS文件。 现在我们想使用Excel 2010代替2003.所以我在一台独立的开发计算机上安装了Excel 2010,并加载了我的vb6项目。

运行应用程序时,出现“我的Microsoft Excel 10.0对象库”丢失的错误。 这是真实的,因为只有Excel 2010安装在这台计算机上,没有更多的Excel 2003。

问题是,当我想要正确的引用时,我没有find任何“Microsoft Excel 14.0对象库”或类似的东西来代替这个引用。

任何build议?

谢谢。

早期的参考是“绑定”(原谅双关语)导致应用程序分发给不同的Excel版本的用户的问题。

使用后期绑定和编码的最早版本的Excel,你愿意支持是解决scheme。 例如,如果您支持Excel 2000,那么您的应用程序将只使用Excel 2000支持的方法。

但是,如果您的代码是延迟绑定的,则可以使用不明确的方法调用,并检测本地版本以确定要运行的代码。

例如:

 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 

由于代码是晚期(即派生自对象),我可以指定只在Excel 2010中有效的方法,代码仍然会编译。 如果代码早期绑定到Excel 2003,则不会编译。 在运行时我确定版本来决定使用哪些方法。

如果您使用的是Excel 2010的特定function,则还可以考虑编译应用程序的不同版本。 只有你会知道这是否可能。

另外,我写这个答案后,想到了这一点,但不能在你的应用程序中引用Excel 2010,如果它安装在早期版本的Excel的计算机上,不会引用自动调整到任何版本的Excel是安装?

Interesting Posts