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。