使用宏或启用宏打开受信任的文档时Excel崩溃

时间:2017-07-06 16:42:45

标签: excel-vba vba excel

正如标题所说,我无法使用宏打开受信任的文档 - Excel立即崩溃。制作文档的副本允许它打开(因为副本是不受信任的),我可以在VB编辑器中检查宏,但是启用宏会导致另一次崩溃。为什么会发生这种情况,我该怎么做才能解决它?

2 个答案:

答案 0 :(得分:6)

这是由带有编译错误的宏引起的。要解决此问题,请使用以下步骤(全部归功于alulla at Ozgrid,为了清晰起见,我的指示已轻松改编):

  
      
  1. 打开一个新的Excel工作簿,而不是崩溃的工作簿
  2.   
  3. 转到“开发人员”选项卡,然后单击功能区“代码”部分中的“宏安全性”
  4.   
  5. 单击标题为“禁用所有带通知的宏”的项目符号选项
  6.   
  7. 转到左侧的“受信任位置”标签,然后选中底部的“禁用所有受信任位置”框
  8.   
  9. 转到“受信任的文档”并选中“禁用所有受信任的文档”框
  10.   
  11. 单击“确定”并关闭新工作簿
  12.   
  13. 打开崩溃的Excel文件
  14.   
  15. 不要点击"启用宏" - 而是转到开发人员选项卡和   打开Visual Basic编辑器
  16.   
  17. 在VB编辑器中,保存项目,然后单击Debug>编译VBAProject
  18.   
  19. 纠正发生的任何编译错误
  20.   
  21. 再次保存VB项目,然后保存Excel工作簿
  22.   
  23. 在步骤3-5
  24. 中还原对宏安全性所做的任何更改   
  25. 关闭Excel,重新打开以前崩溃的工作簿,然后启用宏
  26.   

答案 1 :(得分:0)

一些背景/发现

(如果您不关心此问题,请参见下面的解决方案:))
对我们来说,它发生在代码中,该代码在 Excel 2010、2016和2019 中编译并成功运行。因此,必须是一些非常糟糕的编译代码处理错误
我们的问题发生在确定的,始终可复制的代码位置。当调试/检查变量时,会发生奇怪的事情(显示的其他对象超出预期,excel元素的可视部分完全变为白色/残破)...好像它在内部缓慢崩溃,然后自动消失(也从任务管理器中消失)(有时没有立即的自动重启对话框。

解决方案(保存未编译的代码)

我们最终的 6至8步解决方案非常简单,因为这似乎是已保存并重新打开的已编译宏代码工作簿的运行时错误:

  1. 重命名工作簿文件,例如foo.xlsmfoo2.xlsm(不受信任的名称/文件)
  2. 打开 foo2.xlsm,并且不启用宏
  3. 打开VBE编辑器( ALT + F11
  4. (每个文件一次/第一次,例如foo2.xlsm):
    插入一些CrashFix模块
    • (右键单击项目=>插入模块)
  5. 编写或更新其中一些仅存在的注释行,例如

    'excel crash fix from https://stackoverflow.com/a/59876944/1915920: 2020-01-23 10:00
    
    • 如果已经存在:只需在此处进行任何更改,例如更改为当前时间
    • (==>尽管该代码仅在注释级别上进行了更改,但将在内部被标记为未编译,并在下次打开启用宏的代码后重新编译)
  6. 关闭并保存 foo2.xlsm
  7. 重命名 foo2.xlsmfoo.xlsm
  8. 可选:在文件级写保护文件
    • 仅在不频繁更新时才有用
    • 防止它被编译代码意外保存而导致下次打开时崩溃

现在,您应该可以打开它而不会崩溃(因为显然,在启动时运行初始编译可以以某种方式阻止崩溃)。

对于其他使用该文件的用户(例如在网络共享环境中),该文件现在应该打开,而没有任何启用宏的对话框。 (对于您自己的环境,它可能会再次询问,因为Excel以某种方式“知道”了它在系统之间的重命名)