EXCEL用户自定义函数 – 没有任何MISSING引用,找不到项目或库

我在我的电脑中开发了一个用户定义的function,并将文档保存为XLSM。 当我将其分发给我公司的其他用户时,只要打开工作簿,然后点击“启用macros”,就会收到“无法find项目或库”错误。

如果他们点击Debug ,黄色的线将落在用户定义函数的首行,像这样

错误在第一行

然后我检查了VBE的工具 – 参考,但是在所有的计算机(我的和其他用户)中找不到任何东西。

但是参考是有点差别,

在我的电脑里,它是

开发人员计算机中的参考

在其他用户的计算机中,它是

在其他用户参考

唯一的区别是突出显示的行。 在我的电脑里,是Microsoft office 16.0 Object Library,因为我用Excel 2013安装了Project 2016,而其他人的版本是15.0

顺便说一下,在我点击“启用macros”button之前,我得到了上面的图片,因为一旦我点击它,错误信息将显示无限次,我将永远不能进入VBE的参考。 因此,代码实际运行时可能会有一个MISSING引用。

这个问题很可能是由不同版本的Microsoft Office Object Library引起的。

您可以尝试导出VBA代码,并删除xlsm文件中的VBA模块,然后将VBA代码重新插入到用户的计算机中。 通常这个问题将被解决。

发生此问题的原因是Excel实际上保存VBA的编译代码,虽然我们从来没有看到任何编译代码或编译包。 当其他用户打开已启用Macros的文件时,Excel将自动运行已编译的机器代码,而不是可读的源代码。 由于机器代码中不同的库有不同的接口(我想称之为接口?),Excel无法find库并发生错误。

所以你也可以在分发你的XLSM文件之前尝试反编译你的VBA代码。 请访问此页面下载用于反编译XLSM文件的工具: VBA反编译器

当你在你的代码的某个地方使用早期绑定的时候,这种情况可能会发生(我没有看到这种情况发生在截图中的代码部分)。

解决方法是更改​​代码以使用后期绑定。 请看看Siddharth Rout在防止由于用户安装了旧版MS Office(MS Outlook)而导致Excel VBA编译错误的答案? 了解更多信息。