【问题标题】:Recovery from Excel VBA corruption and Automation errors从 Excel VBA 损坏和自动化错误中恢复
【发布时间】:2021-06-25 23:16:45
【问题描述】:

我有一个 Excel 工作簿,其中包含很多内容 - 宏、外部和实时数据源等 - 上个月大约每周都会中断一次。

运行宏并获取时通常会出现损坏:

Run-time error '-2147319767 (80028029)':

Automation error
Invalid forward reference, or reference to uncompiled type.

调试器识别出的故障点毫无意义——相同的代码已经运行了数周。我一直在使用的修复是回滚到工作簿的已保存版本,该版本不会引发运行宏的错误,并且它始终包含完全相同的 VBA 代码。所以我得出结论,幕后的某些东西正在被破坏。

发生了什么事?有没有办法避免这种情况?有没有比回滚到以前保存的工作簿版本更好的修复方法?

【问题讨论】:

  • 遇到此类错误时我采取的步骤 (1) 始终使用本地驱动器上的副本(我从不处理从 OneDrive 打开的大型项目/SharePoint - 这似乎往往以损坏结束)(2)将工作簿保存为 xlsb 格式,这似乎(根据我的经验)不太容易损坏。

标签: excel vba corruption


【解决方案1】:

关于这个错误有很多questions,而且修复它们的代码更改也没有任何意义。他们的共同点是,他们对 VBA 代码进行了更改,one deduces 强制 Excel 重新生成其伪代码。

进一步的研究导致人们经常提到 Excel 工作簿损坏,以及一个名为 Excel VBA Code Cleaner 的免费实用程序。该实用程序的作者解释了发生了什么:

在创建 VBA 程序的过程中会生成大量垃圾代码 在您的文件中。如果您不定期清理文件,您将 开始遇到由这个额外的行李引起的奇怪问题。 清理项目涉及导出其所有内容 VBComponents 到文本文件,删除组件然后导入 从文本文件中返回的组件。

很遗憾,他们还没有发布适用于 64 位 Excel 的实用程序版本。但也可以手动执行相同的操作——保存所有 VB 代码,删除所有模块,然后重新创建它们并重新输入代码。

更新: VBA Code Decompiler 是另一个似乎可以完成相同任务的免费软件实用程序。还有更详细的说明 Office 如何在其文件中编译和保留 VBA 代码。

【讨论】:

  • 这听起来与微软的其他旗舰产品 Windows 是一致的,后者也因堆积会膨胀和损坏它的碎屑而臭名昭著。
猜你喜欢
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
相关资源
最近更新 更多