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

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

检查计算机上的引用失败(通过VBA编辑器中的工具/引用菜单项)。 不同的平台可以安装不同的DLL集,如果有标记为“MISSING”的引用,则会从Excel中得到一些误导性的错误。

这是在这个问题上讨论

这是一个版本差异/缺less参考问题。 有时它会给你错误的正确的function,有时在完全不相关的function。

如果要部署到不同版本的Excel,则可以使用后期绑定而不是早期绑定来解决此问题。 当你正在开发,你可以使用类似的东西

Dim x As Excel.Application x = New Excel.Application 

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

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

不是因为许可。 许多因素可能是,但我可以指望:根据多个计算机上的Office SP版本的差异,这可能会让你头痛。 还要检查每个Office Web组件版本。 您在Office上的“选项和加载项”可能会为您提供一些线索。

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

自我authentication和数字签名

有关Office代码和macros安全性的安全主体的一般信息

受信任的位置默认为Office 2003

在Office 2003中的macros安全性

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