“无法找到项目或库”用于标准VBA功能

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

标签: excel-vba vba reference namespaces excel

所以我不得不在我的电脑上运行别人的excel应用程序,而且我在日期,格式,十六进制,中等等标准函数上找到“找不到项目或库”。

一些研究表明,如果我用“VBA”为这些函数添加前缀。就像在“VBA.Date”中一样,它会正常工作。

网页建议它与我的系统上的项目引用有关,而它们必须在开发人员的系统上正常。我将在一段时间内与其他人讨论此问题,并将这些应用程序分发给其他人,因此我需要了解我需要修复的excel设置有什么问题,或者需要更改的内容。 xls文件,以便它可以在各种系统上运行。我想避免让每个人都使用“VBA”。作为一个明确的参考,但如果没有理想的解决方案,我认为这是我们必须做的。

  • 如何制作“VBA”。隐含在我的项目属性/ references / etc?

- 亚当

9 个答案:

答案 0 :(得分:59)

如果缺少对完全不同的库的引用,我在标准函数上看到了错误。

在VBA编辑器中,从菜单中启动Compile命令,然后检查References对话框以查看是否有任何遗漏,如果有,请尝试添加这些库。

通常,编译完整的VBA代码然后在分发之前保存文档似乎是一种好习惯。

答案 1 :(得分:29)

我遇到了同样的问题。这对我有用:

  • 在VB中,转到工具»参考
  • 取消选中“Crystal Analysis Common Controls 1.0”库。或任何图书馆。
  • 请留下这5个参考文献:
    1. Visual Basic For Applications(这是定义VBA语言的库。)
    2. Microsoft Excel对象库(这定义了Excel的所有元素。)
    3. OLE自动化(它指定用于链接和嵌入文档以及其他应用程序自动化的类型以及Excel用于与外界通信的COM系统的“管道”。)
    4. Microsoft Office(这定义了所有Office程序(如命令栏和命令栏控件)通用的内容。)
    5. Microsoft Forms 2.0如果您使用的是用户表单,则必须填写此表格。此库定义了诸如用户表单和可以放置在表单上的控件之类的内容。
  • 然后保存。

答案 2 :(得分:15)

我遇到了这个确切的问题,发现在用户计算机上,我所依赖的其中一个库在引用对话框中被标记为“MISSING”。在这种情况下,我的Office 2007版本中提供了一些办公室字体库,但客户端桌面上却没有。

你得到的错误是一个完整的红色鲱鱼(正如divo指出的那样)。

幸运的是我没有使用库中的任何内容,所以我能够完全从XLA引用中删除它。我想,divo的扩展'建议的最佳做法是测试在所有目标Office版本上检查XLA(在任何情况下都不是一个坏主意)。

答案 3 :(得分:9)

就我而言,该功能是AMBIGUOUS,因为它是在VBA库(存在于我的参考文献中)中定义的,也是在Microsoft Office对象库(也存在)中定义的。我删除了Microsoft Office对象库,瞧!无需使用VBA。前缀。

答案 4 :(得分:5)

就我而言,我什至无法在Visual Basic窗口中打开“参考”。我什至尝试重新安装Office 365,但没有成功。最后,我尝试在“信任中心”设置中禁用宏。当我重新启动Excel时,我收到警告消息,宏被禁用,并且当我单击“启用”时,我不再收到错误消息。

稍后,我重新启用了“信任中心”设置中的所有宏,并且错误消息没有显示!

嘿,如果没有其他适合您的方法,请尝试上面的方法;它为我工作! :)

更新: 问题又回来了,这就是我第二次“修复”它的方法:

我在在线Excel 中打开了工作簿(在浏览器中,Office 365仍然不支持宏),并用新文件名保存了该工作簿(仍使用.xlsm文件扩展名),并在桌面软件中重新打开。有效。

答案 5 :(得分:0)

在我的情况下,我正在家中检查我的办公室计算机上安装的工作(安装了Visio)(没有Visio)。尽管VBA似乎被挂在简单的默认函数上,但问题是我对Visio库的引用仍处于活动状态。

答案 6 :(得分:0)

我找到了对AVAYA / CMS程序文件的引用?完全随机,这是在MS Access中,与AVAYA无关。我的PC上确实有AVAYA,而其他人没有,所以这解释了为什么它在我的计算机上而不是其他机器上可以工作-但Access却没有与AVAYA链接的原因。无论如何-我只是取消了引用,似乎已经解决了问题

答案 7 :(得分:0)

即使所有引用都正确,前缀问题也会导致编译错误。

如何为所有模块中的所有“内置VBA函数”创建查找和替换子项, 像这样:

replace text in code module

例如“ =日期”将替换为“ = VBA.Date”。

例如“ Date(”将替换为“ VBA.Date(”。

(不包括“按日期更改”或“ mydate”)

所有用于查找和替换的vba函数都写在这里:

vba functions list

答案 8 :(得分:-1)

我在多个XLSM文件中打开和关闭此错误已有大约两年的时间(这很烦人,因为它发生时文件没有问题!-我怀疑孤立的Excel进程是问题的一部分)

我发现的最有效的解决方案是将Python与oletools结合使用 https://github.com/decalage2/oletools/wiki/Install并提取所有模块的VBA代码并保存在文本文件中。

然后,我仅将文件重命名为zip文件(以防万一,备份!),打开该zip文件并删除xl / vbaProject.bin文件。重命名为XLSX,应该很好。

复制保存的VBA代码(这需要清除换行符,注释和其他内容。还需要添加缺少的库。

这在没有其他方法的情况下救了我。

YMMV。