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

在我的VB6项目中将Excel 2003的引用替换为Excel 2010,excel,vb6,early-binding,Excel,Vb6,Early Binding,我有一个VB6应用程序运行多年。此应用程序在过去创建XLS文件时始终参考Excel 2003。现在我们想用Excel 2010代替2003。因此,我只在单独的开发计算机上安装了Excel2010,并加载了我的vb6项目 运行应用程序时,我发现“Microsoft Excel 10.0对象库”丢失的错误。这是正确的,因为此计算机上只安装了Excel 2010,不再安装Excel 2003 问题是当我想要正确的引用时,我没有找到任何“Microsoft Excel 14.0对象库”或类似的东西来替换

我有一个VB6应用程序运行多年。此应用程序在过去创建XLS文件时始终参考Excel 2003。现在我们想用Excel 2010代替2003。因此,我只在单独的开发计算机上安装了Excel2010,并加载了我的vb6项目

运行应用程序时,我发现“Microsoft Excel 10.0对象库”丢失的错误。这是正确的,因为此计算机上只安装了Excel 2010,不再安装Excel 2003

问题是当我想要正确的引用时,我没有找到任何“Microsoft Excel 14.0对象库”或类似的东西来替换此引用

有什么建议吗

谢谢。

早期绑定引用“绑定”(请原谅双关语)会导致应用程序分发给具有不同Excel版本的用户时出现问题

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

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

例:

由于代码是后期绑定的(即从Object派生),因此我可以指定仅在Excel 2010中有效的方法,并且代码仍将编译。如果代码早期绑定到Excel2003,它将无法编译。在运行时,我决定使用哪个版本的方法

<>你也可以考虑编译你的应用程序的不同版本,如果你使用Excel 2010的特定特性。如果可能的话,只有你知道


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

。尝试重新安装。14 A首先应向后兼容10。它不是office的64位版本,是吗?14向后兼容10,好吧,但我需要引用我的项目中的某些内容,以便Excel可用。后期绑定?然后我不得不修改很多代码。我更喜欢引用Excel 14.0,因为它应该是这样的。只需搜索并替换
为Excel。应用程序
为对象
,仅此而已。那么,谁的电脑上有什么版本的Excel就无关紧要了。
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