我已经有过几个Excel崩溃的案例。
起始点是Office外接程序当前忙于执行持续时间更长的操作(在所有工作表中搜索函数,然后从服务器检索数据,然后将这些数据写入Excel)。如果您在这段时间内单击某个单元格并输入一个值,如果您当前正在Excel.run中工作,您将得到一个"InvalidOperationInCellEditMode“。Excel的崩溃并不总是发生,有时需要几十次。
但是,对于当前正在使用Excel中的外接程序的用户来说,这样的崩溃总是令人恼火的。顺便说一句,如果你捕获了一个Excel.run范围,即使它崩溃了,它也不会有什么帮助。
发布于 2020-05-01 10:19:28
编辑模式导致任何API调用失败这一事实是一个“已知问题”,而且不是真正可修复的--即使是VBA也会对大多数API调用表现出同样的问题。并且功能区中的大多数动作都被禁用。Office外接程序API也是如此。
因此,当进入单元格编辑模式时,API调用失败并抛出异常InvalidOperationInCellEditMode
是故意的。
有一个变通方法,不确定您是否可以在您的场景中利用:
Excel.run
有一个接受RunOptions
对象的重载。它包含一组在函数运行时影响平台行为的属性。有一个属性:delayForCellEdit
确定是否将批处理请求延迟到用户退出单元格编辑模式。为true时,批处理请求将延迟,并在用户退出单元格编辑模式时运行。如果为false,则如果用户处于单元格编辑模式,批处理请求将自动失败(导致错误到达用户)。未指定delayForCellEdit
属性的默认行为等同于它为false时的行为。
对于崩溃问题,我实际上无法重现它。如果你能分享更多关于复制信息的技巧,那就太好了,谢谢。
https://stackoverflow.com/questions/61519756
复制相似问题