为什么我的VBA项目在其他计算机上失败?

时间:2009-03-05 02:05:45

标签: excel ms-access vba excel-vba

我基于Excel和Access制作了一个VBA项目。当我复制到其他计算机时,某些方法(左,右等)或控件(ComboBox)有时会被禁用。我不得不在那台电脑上重建。但有时它没关系。为什么?这是因为许可证问题吗?

4 个答案:

答案 0 :(得分:2)

检查计算机上的参考是否失败(通过VBA编辑器中的工具/参考菜单项)。不同的平台可以安装不同的DLL集合,如果有一个标记为“MISSING”的引用,您将从excel中获得一些误导性错误。

讨论in this question

答案 1 :(得分:2)

这是版本差异/缺少参考问题。 有时它会在正确的函数上给出错误,有时会在完全不相关的函数上给出错误。

如果要部署到不同版本的Excel,则可以使用后期绑定而不是早期绑定来解决此问题。在开发时,您可以使用

之类的东西
Dim x As Excel.Application
x = New Excel.Application

但是对于部署,您可以将其更改为以下内容,然后完全删除引用。

Dim x As Object
x = CreateObject("Excel.Application")

答案 2 :(得分:1)

不是因为许可。可能有很多因素,但我可以指出:根据多台计算机上的Office SP版本差异,它可能会让您头疼。另请检查每个的Office Web Components版本。您的选项& Office上的加载项可能会为您提供一些线索。

答案 3 :(得分:1)

检查您遇到问题的计算机上的安全性和权限非常重要。用户必须对前端和后端文件夹具有完全权限。如果安全设置不允许,宏将无法运行。您可能希望阅读:

Self certification and digital signatures

General information on security principals for Office code and macro security

Trusted location defaults for Office 2003

Macro security in Office 2003

在大多数情况下,后期绑定将解决VBA中引用的问题,除非您有一些不寻常的引用。大多数问题是由于后期绑定可以克服的库版本的差异造成的。对于VBA,通常建议您使用早期绑定进行开发,但使用后期绑定进行发布。后期绑定的主要缺点是将内置常量更改为值(速度不再是以前的问题。)