正如标题所说,我无法使用宏打开受信任的文档 - Excel立即崩溃。制作文档的副本允许它打开(因为副本是不受信任的),我可以在VB编辑器中检查宏,但是启用宏会导致另一次崩溃。为什么会发生这种情况,我该怎么做才能解决它?
答案 0 :(得分:6)
这是由带有编译错误的宏引起的。要解决此问题,请使用以下步骤(全部归功于alulla at Ozgrid,为了清晰起见,我的指示已轻松改编):
- 打开一个新的Excel工作簿,而不是崩溃的工作簿
- 转到“开发人员”选项卡,然后单击功能区“代码”部分中的“宏安全性”
- 单击标题为“禁用所有带通知的宏”的项目符号选项
- 转到左侧的“受信任位置”标签,然后选中底部的“禁用所有受信任位置”框
- 转到“受信任的文档”并选中“禁用所有受信任的文档”框
- 单击“确定”并关闭新工作簿
- 打开崩溃的Excel文件
- 不要点击"启用宏" - 而是转到开发人员选项卡和 打开Visual Basic编辑器
- 在VB编辑器中,保存项目,然后单击Debug>编译VBAProject
- 纠正发生的任何编译错误
- 再次保存VB项目,然后保存Excel工作簿
- 在步骤3-5
中还原对宏安全性所做的任何更改- 关闭Excel,重新打开以前崩溃的工作簿,然后启用宏
醇>
答案 1 :(得分:0)
(如果您不关心此问题,请参见下面的解决方案:))
对我们来说,它发生在代码中,该代码在 Excel 2010、2016和2019 中编译并成功运行。因此,必须是一些非常糟糕的编译代码处理错误。
我们的问题发生在确定的,始终可复制的代码位置。当调试/检查变量时,会发生奇怪的事情(显示的其他对象超出预期,excel元素的可视部分完全变为白色/残破)...好像它在内部缓慢崩溃,然后自动消失(也从任务管理器中消失)(有时没有立即的自动重启对话框。
我们最终的 6至8步解决方案非常简单,因为这似乎是已保存并重新打开的已编译宏代码工作簿的运行时错误:
foo.xlsm
至foo2.xlsm
(不受信任的名称/文件)foo2.xlsm
,并且不启用宏foo2.xlsm
):CrashFix
模块
编写或更新其中一些仅存在的注释行,例如
'excel crash fix from https://stackoverflow.com/a/59876944/1915920: 2020-01-23 10:00
foo2.xlsm
foo2.xlsm
到foo.xlsm
现在,您应该可以打开它而不会崩溃(因为显然,在启动时运行初始编译可以以某种方式阻止崩溃)。
对于其他使用该文件的用户(例如在网络共享环境中),该文件现在应该打开,而没有任何启用宏的对话框。 (对于您自己的环境,它可能会再次询问,因为Excel以某种方式“知道”了它在系统之间的重命名)