自从升级到 Excel 365 以来,我的公司一直遇到各种问题,即 VBA 支持的 Excel 工作簿崩溃或无法正常运行。这些问题出现在各种工作簿和各个部门,包括看似简单的 VBA 工作簿。我发现了一个修复方法(见下文),但它是不可持续的。
问题
下面列出了我们遇到的各种问题。请注意,仅当您在 Excel 365 桌面版中打开文件时才会出现这些问题。在 Excel 365 浏览器应用程序或 Excel 2016 中打开相同的文件时,它们可以正常工作。此外,所有这些问题都是随机发生的。用户可能已经在文件中工作了数周,然后他们下次打开文件时会遇到这些错误之一。
- 即使我们使用标准库和基本 VBA 集,也会出现“找不到项目或库”错误。然后,当您打开 VBA 编辑器窗口时,所有 VBA 屏幕基本上都被冻结了,并且无法访问库列表。
- 打开这些文件并启用 VBA 时,Excel 硬崩溃或锁定。请注意,崩溃仅在启用 VBA 时发生。如果您在未启用 VBA 的情况下打开文件,它会正常工作(但显然您不能使用任何代码)。
- 文件打开看起来很好,但 VBA 不起作用,当您访问 VBA 编辑器窗口时,一切都再次被锁定。
- “发生未处理的 win32 异常”错误
- 执行命令时,出现错误 32809,这似乎表明编译的 VBA 已损坏
修复
打开 VBA 编辑器窗口,然后选择 Debug -> Compile VBAProject 似乎可以解决问题。在以这种方式手动编译文件的情况下,我还没有遇到上述任何问题。这样做的问题是,每次向文件中添加代码或向文件中添加新选项卡时,都必须再次执行此手动编译。
是的,显然在文件中添加一个选项卡会改变工作簿结构,以至于需要再次编译。Compiled VBAProject 选项将显示为灰色。但是添加一个选项卡(或添加新的 VBA)会使它变灰并需要另一个手动编译,否则问题会再次出现。
此修复也适用于修复出现上述问题的文件。要修复这些文件,您可以:
- 确保在您的安全设置中启用“禁用受信任的文档”和“禁用带有通知的 VBA 宏”,以便在您打开文件时 VBA 不会自动运行。
- 打开有错误的文件,但不要启用 VBA。
- 转到 VBA Editor 窗口,选择 Debug -> Compile VBAProject。
- 保存文件,关闭它,重新打开它,启用 VBA,一切正常。
但同样,这是不可持续的,因为我的所有用户在向工作簿添加新选项卡时都必须记住编译 VBA。
帮助?
有没有人找到更可持续的解决方案来解决这个问题?Microsoft 正在开发的 Excel 365 Desktop 自动编译器是否存在错误?