0

自从升级到 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)会使它变灰并需要另一个手动编译,否则问题会再次出现。

此修复也适用于修复出现上述问题的文件。要修复这些文件,您可以:

  1. 确保在您的安全设置中启用“禁用受信任的文档”和“禁用带有通知的 VBA 宏”,以便在您打开文件时 VBA 不会自动运行。
  2. 打开有错误的文件,但不要启用 VBA。
  3. 转到 VBA Editor 窗口,选择 Debug -> Compile VBAProject。
  4. 保存文件,关闭它,重新打开它,启用 VBA,一切正常。

但同样,这是不可持续的,因为我的所有用户在向工作簿添加新选项卡时都必须记住编译 VBA。

帮助?

有没有人找到更可持续的解决方案来解决这个问题?Microsoft 正在开发的 Excel 365 Desktop 自动编译器是否存在错误?

4

1 回答 1

0

我想我可能在这个帖子中找到了答案: https ://social.msdn.microsoft.com/Forums/en-US/814ac2ce-ab45-45dc-8c6a-8ef0775d189a/excel-64bit-crashes-when-activating-macros -but-excel-32bit-does-not?forum=exceldev&prof=required

根据该线程 - “原因是 Excel 没有正确保存 VBA 代码的编译状态,并且 64 位 Excel 在打开受影响的 Excel 文件时无法从该问题中恢复(通常 32 位可以)。仅针对 Excel 2016 发布了修复程序,而不针对其他版本发布了“。这确实可以确认它是 Excel 中的一个错误,并解释了为什么我们只看到 365 64 位 Excel 的问题。

这也解释了为什么我的手动编译修复有效。根据我发现的文章,有一个更可持续的解决方案。您可以更改 Excel 的注册表并强制 VBA 准确编译。

要实施永久修复:

  1. 打开开始菜单并输入“reg”并选择“注册表编辑器”</li>
  2. 导航:Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Excel\options
  3. 在编辑菜单上,指向新建,然后单击 DWORD 值。
  4. 键入 ForceVBALoadFromSource,然后按 Enter。
  5. 在详细信息窗格中,右键单击 ForceVBALoadFromSource,然后单击修改。
  6. 在数值数据框中,键入 1,然后单击确定。
于 2021-09-02T20:59:48.900 回答