【问题标题】:EXCEL User Defined Function - Can't find project or library without any MISSING referenceEXCEL 用户定义函数 - 找不到任何缺少参考的项目或库
【发布时间】:2017-01-07 13:47:28
【问题描述】:

我在我的计算机中开发了一个用户定义的函数并将文档保存为 XLSM。当我将它分发给我公司的其他用户时,只要他们打开工作簿然后点击“启用宏”,他们就会收到“找不到项目或库”错误。

如果他们点击Debug,黄线会落在用户定义函数的头线上,像这样

然后我检查了 VBE 的工具 - 参考,但在所有计算机(我的和其他用户的)中都没有发现任何缺失。

但是参考有点不同,

在我的电脑里是

在其他用户的电脑上是

唯一的区别是突出显示的行。在我的计算机中,它是 Microsoft Office 16.0 对象库,因为我使用 Excel 2013 安装了 Project 2016。而其他人是 15.0

顺便说一句,我在点击“启用宏”按钮之前得到了上图,因为一旦我点击它,错误消息将无限次显示,我将永远无法进入 VBE 中的参考。因此,当代码实际运行时,可能会有一个 MISSING 引用。

【问题讨论】:

    标签: vba excel excel-udf


    【解决方案1】:

    这个问题很可能是由不同版本的 Microsoft Office 对象库引起的。

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

    出现这个问题的原因是 Excel 实际上确实保存了 VBA 的编译代码,尽管我们从未看到任何编译代码或编译包。当其他用户打开您的启用宏的文件时,Excel 将自动运行已编译的机器代码,而不是可读的源代码。由于机器码中不同库的接口不同(我猜是叫接口?),Excel找不到库,出现错误。

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

    【讨论】:

      【解决方案2】:

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

      一种解决方法是更改​​您的代码以使用后期绑定。请看一下 Siddharth Rout 的答案 Preventing Excel VBA compile errors due to users having an older version of MS Office (MS Outlook) installed? 了解更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-09
        • 1970-01-01
        • 1970-01-01
        • 2012-07-25
        • 2021-03-26
        • 1970-01-01
        相关资源
        最近更新 更多