首页 > 解决方案 > 在 office-addin 运行时编辑单元格时 Excel 崩溃

问题描述

我已经有几个 Excel 崩溃的案例。

起点是 Office 插件目前正忙于执行更持久的操作(在所有工作表中搜索函数,随后从服务器检索数据并将此数据写入 Excel)。如果您在此期间单击一个单元格并输入一个值,您将得到一个“InvalidOperationInCellEditMode”,如果您当前正在 Excel.run(asyn context ... - 插件中的范围内工作。Excel 的崩溃不会总是发生,有时需要几十次。

但是,对于当前在 Excel 中使用插件的用户来说,这样的崩溃总是很烦人。顺便说一句,如果您捕获 Excel.run 范围,它也无济于事,即使 Excel 崩溃。

标签: exceloffice-js

解决方案


编辑模式使任何 API 调用失败的事实是一个“已知问题”,并且无法真正修复——即使 VBA 对 [大多数] API 调用也表现出同样的问题。并且功能区中的大多数操作都被禁用。Office 加载项 API 也是如此。

因此,当进入单元格编辑模式时,API 调用失败并抛出异常InvalidOperationInCellEditMode是设计使然

有一种解决方法不确定您是否可以在您的场景中利用:

Excel.run有一个接收RunOptions对象的重载。这包含一组在函数运行时影响平台行为的属性。有一个属性:delayForCellEdit确定Excel是否延迟批处理请求,直到用户退出单元格编辑模式。当为 true 时,批处理请求会延迟并在用户退出单元格编辑模式时运行。当为 false 时,如果用户处于单元格编辑模式,批处理请求会自动失败(导致错误到达用户)。delayForCellEdit未指定属性的默认行为等效于它为 false 时的行为。

可以参考这篇文章:https ://docs.microsoft.com/en-us/javascript/api/excel/excel.runoptions?view=excel-js-preview#delayforcelledit

对于崩溃问题,我实际上无法重现它。如果您能分享更多关于复制信息的提示,那就太好了,谢谢。


推荐阅读