转换为Office 2013后,在VBA脚本中搜索引用的文件Excel.exe

时间:2015-01-12 15:53:57

标签: ms-access access-vba

我有一个与其他用户共享的Access应用程序。我们在Sharepoint站点上共享数据库,每次检查/下载它以进行编辑,然后将其放回Sharepoint并重新检入。我们这样做是因为如果我们在服务器上共享相同的副本,则响应时间是这是不可接受的,我们一次只需要一个人就可以访问。那不是我现在的问题。

上周,我的旧PC死了,我换了一台新PC。旧PC是Windows7,32位,带有Office 2010.新PC也是Windows7,但64位和Office 2013.据我所知,我没有将数据库格式更改为新版本的Access或任何其他变化。数据库在我的新PC上仍能正常工作。

VBA脚本将数据库与Excel工作簿集成,并将数据导出到Excel。我选择的一个参考是Microsoft Excel 15.0对象库 - 我一直使用的相同参考。现在,当我将数据库加载回服务器并且其他用户下载它时,他们可以打开数据库,但会收到“搜索参考文件Excel.exe”的错误,然后是“表达式中未定义的函数'格式'” 。

其他用户的PC配置方式与原来的一样,在转换为Office 13并将我的副本保存回服务器之前,他们能够毫无问题地使用数据库。

所以我的问题是 - 导致这种情况的原因,更重要的是,我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

“...我选择的参考是Microsoft Excel 15.0对象库...”

Microsoft Excel 15.0对象库是Office 2013的版本。对于Office 2010,版本为 Microsoft Excel 14.0对象库

在Access 2010中开发和使用数据库时,引用最初为14.0。在Access 2013中打开时,Access会将引用调整为其可用版本(15.0)。遗憾的是,当您尝试在Access 2010中再次使用数据库时, Microsoft Excel 15.0对象库对于该Access版本没有意义,因此它不知道使用 Microsoft Excel 14.0对象库< / em>而不是。

修复方法是删除该引用并将代码转换为使用后期绑定。

以下是从Using early binding and late binding in Automation复制的后期绑定的简短示例:

' Declare the object as a late-bound object
  Dim oExcel As Object

  Set oExcel = CreateObject("Excel.Application")

请注意,如果您的代码使用Excel命名常量,则需要将常量值替换为其名称,或在代码中声明常量。