【问题标题】:What causes 'can't find project or library error' and how to prevent it from happening?什么导致“找不到项目或库错误”以及如何防止它发生?
【发布时间】:2018-01-17 12:45:35
【问题描述】:

我在为我们的一个办公室使用 Excel 开发的工具时遇到问题。这是一个足够大的文件,其中包含几个宏,但它每天都能正常运行。

但是每隔几天,文件就会出现“找不到项目或库”错误,并且文件会崩溃。我知道标准指南是,当出现此错误时,请转到 vba>tools>referneces 并取消选中缺少的库,但是这里不是这种情况。简单地说,当这种情况发生时文件崩溃并重新启动,并且如果它会发生一次,那么每次打开文件的其他尝试都会导致相同的崩溃错误。我的意思是文件绝对没问题,你会保存它,回到它并发生错误。所以我总是要恢复绝对破坏它的文件,但是我至少可以从中恢复用户上传的信息并将其复制到模板中。

所以我有两个问题是导致这种情况发生的原因是什么?我和其他办公室都使用相同版本的 excel,所以兼容性应该不是问题。

2个问题是有什么办法可以防止这个错误的发生。

【问题讨论】:

标签: excel vba


【解决方案1】:

我正好有这个问题。如前所述,一旦发生错误,就会导致永久性的“无法修复”循环。我使用 powerquery 和链接数据,这似乎会随机“损坏”文件,如所述 - 最常见的是当 excel 由于某种原因崩溃时。

我发现以下任一方法可以工作: - 在不在 LAN 上的另一台计算机上打开文件。这 似乎是一个关键要求。 - 使用“Excel Online”打开文件

在每种情况下,只需打开文件并用新名称保存即可。将新文件移回工作 PC,它将再次完美打开。

在极少数情况下(如果正在使用 powerquery),有必要在保存新文件之前“刷新所有”数据连接。

另外,新文件通常比原始文件小。

【讨论】:

  • 当所有其他方法都失败时,这对我有用。我在 Excel 中在线打开了我的工作簿(Office 365,在浏览器中,无论如何都不支持宏),用新文件名保存它(仍然使用 .xlsm 文件扩展名),然后在桌面软件中重新打开。它奏效了。
【解决方案2】:

这对我有用:

在 VB 中,转到工具 » 参考 1)取消选中库“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 如果您使用的是用户表单,这是必需的。这个库定义了诸如用户表单和可以放置在表单上的控件之类的东西。 然后保存。

【讨论】:

  • 这是否阻止了此错误的发生?我没有选择“Crystal Analysis Common Controls 1.0”,所有其他选择的都与您的相同,除了最后一个但不使用用户表单。
【解决方案3】:

我也遇到过类似的令人讨厌的问题。

首先要做的是使用CodeCleaner a free utility from AppsPro 这将导出您的模块,然后重新导入它们,因为在内部它们会得到很多二进制“lint”,这可能会导致问题。

建议的第二件事是开始分解您的代码库。因此,开始删除模块以查看哪个模块是违规者。我知道这很糟糕,但你怎么知道问题出在哪里。

第三个建议是始终完全限定您的功能。因此,不要使用 Len(sMyString) 编写 VBA.Len(sMyString) 来帮助防止误报编译错误。

【讨论】:

  • 嗯..我明白了..但是问题是该工具可能在几天内工作得非常好,并且错误会突然发生,我不知道是什么触发它所以不能真的像那样测试它.. 导出和重新导入我的模块到底有什么好处?这是在错误发生之后还是之前完成?因为之后它不可能导致文件崩溃。
  • 来自 AppsPro 链接 '在创建 VBA 程序的过程中,您的文件中会积聚大量垃圾代码。如果您不定期清理您的文件,您将开始遇到由这些额外包袱引起的奇怪问题。清理项目涉及将其所有 VBComponents 的内容导出到文本文件,删除组件,然后从文本文件中导入组件。'
猜你喜欢
  • 2021-03-07
相关资源
最近更新 更多