标准VBA功能的“找不到项目或库”


78

因此,我必须在PC上运行其他人的excel应用程序,并且在标准功能(例如日期,格式,十六进制,中点等)上得到“找不到项目或库”。

一些研究表明,如果我在这些功能前面加上“ VBA”。就像“ VBA.Date”中那样,它将正常工作。

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

  • 如何制作“ VBA”。隐含在我的项目属性/引用/等中?

-亚当


您是否正在使用一个版本的excel开发并使用其他版本分发给用户?
Russ Cam

可能是这种情况-我不知道开发人员正在使用哪个版本。我会检查。
亚当·戴维斯


我必须在vba前面加上一堆函数。在此之前,我先找到丢失的库。
kztd

尝试使用Excel Online(Office 365)打开文件,并使用新文件名保存。这对我有用!
肖恩·麦卡锡

Answers:


63

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

在VBA编辑器中,从菜单中启动“编译”命令,然后检查“引用”对话框以查看是否缺少任何内容,如果有,请尝试添加这些库。

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


4
我同意。缺少参考将被明显标记为MISSING。就您而言,我怀疑它是Excel库的更高版本,可以通过后期绑定或选择较早的库来解决。我认为编译代码不会对缺少参考有所帮助。
Fionnuala

嗯 我正在要求输入VBAproject密码。情节变厚。
亚当·戴维斯

1
是时候找到我认为的原始开发人员了。
Toby Allen

我只是想补充一点,我也有这个问题,但情况非常特殊。有些机器将具有所有DLL(包括本例中的Acrobat Distiller),而有些则没有。我仍然需要没有Acrobat DLL的机器来运行不使用它的宏,因此诉诸VBA。这些功能的名称空间添加。这解决了该问题,并且在两种情况下均有效。
奥利弗·格雷

我只是想指出我遇到了同样的问题,没有一个标记为MISSING的引用,我没有找到解决方法,但是一个临时的解决方法是:在VBE中打开引用对话框,不要触摸任何东西只需单击“确定”,VBA项目就会恢复正常。
瑞克(Rick)

32

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

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

对于我来说,我必须取消选中“ MicroSoft MapPoint 19.0 Object Library”,该宏在相关宏中未使用,但在电子表格的其他地方使用。
ELW

2
我的是“ Microsoft Windows Common Controls 6.0(SP4)”,它存在于我的Excel 2010机器上,但带有Excel 2013的笔记本电脑上。此外,它似乎正在使用中(我收到“无法删除控件或引用;在使用中”(如果我取消选中它),那么我需要找出正在使用的东西并摆脱它...
Rich Rich

[更正:上面应该说“不在笔记本电脑上...”]事实证明,我也无法在运行它的计算机上删除项目引用。我现在尝试以编程方式将其删除(使用.VBProject.References,对其进行循环,然后在不良的代码上调用Remove将其删除),但出现“运行时错误'-2147319779(8002801d)':对象库未“在机器上没有图书馆,我也得到‘注册运行时错误‘57101’:不能说在机器上删除默认基准’确实有MSComctlLib库存在。rr
Rich

15

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

您得到的错误是完全的红色鲱鱼(如divo所指出)。

幸运的是,我没有从库中使用任何东西,因此我能够将其从XLA引用中完全删除。我想,divo建议的最佳实践的扩展将用于测试,以检查所有目标Office版本上的XLA(无论如何都不是坏主意)。


10

就我而言,就是该函数在VBA库(在我的参考资料中存在)以及Microsoft Office对象库(也存在)中定义时是模糊的。我删除了Microsoft Office对象库,瞧!无需使用VBA。字首。


4

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

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

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

更新: 问题返回了,这是我第二次“修复”它的方式:

我在Excel联机版中打开了工作簿(无论如何,Office 365在浏览器中均不支持宏),将其保存为新文件名(仍使用.xlsm文件扩展名),然后在桌面软件中重新打开。有效。


2
到目前为止,在Excel中在线打开工作簿是解决该问题的唯一方法,并且相信我,我已经尝试了从安全模式到重新安装/修复Office到重新启动计算机和祈祷的所有方法。我希望我在这里了解更多的因果关系,因为它似乎是随机地在启用宏的.xlsm工作簿中发生,尽管这种情况很少发生-奇怪的是,它似乎更经常发生在更复杂的文件中。似乎VBA库的某些元素可能已损坏,但Excel Online可以修复它,而其他方法不能修复这一事实,这很奇怪
Mako212

0

在我的情况下,我正在家里(没有Visio)检查在我的办公室计算机(已安装Visio)上完成的工作。即使VBA似乎挂在简单的默认功能上,问题仍然是我对Visio库的引用仍然处于活动状态。


0

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


0

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

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

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

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

当没有其他方法时,这救了我。

YMMV。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.