加载项在启动最小化时使Excel崩溃
我使用Process.Start(...)
在我的C#WinForms应用程序中启动Excel(这有一个原因)。 我想在后台启动它,而不会分散用户的注意力,因此我尝试将其启动最小化或隐藏。 在这两种情况下,我都会遇到一种非常奇怪的行为:
几秒钟后, Excel恢复窗口(如果它被隐藏,甚至会显示它)然后崩溃说:“Microsoft Office Excel遇到问题,需要关闭。(Win XP崩溃消息。)”
如果我通过双击桌面上的快捷方式图标手动启动Excel,然后立即切换到另一个应用程序窗口,以便Excel窗口在启动期间失去焦点,则会发生同样的情况。
仅当任何XLA加载项包含UserForm时,才会出现此问题。 如果我删除UserForm,问题就会消失。 如果我删除加载项,问题就会消失。
任何帮助都表示赞赏,只要它是
- 解释为什么会发生这种情况
- 我可以在加载项中更改的内容
- 一种解决这个bug的方法(不使用COM)
- 不建议使用COM。 ( 见这里了解我为什么不这样做 。)
- 不是更新Excel的建议(我不能)
重现步骤:
- 使用空工作簿启动Excel 2007。
- 另存为…
- 文件类型:Excel 2003加载项(* .xla)
- 位置:%APPDATA%\ Microsoft \ Excel \ XLSTART \ foobar.xla
- Alt + F11(打开VBA编辑器)
- 将UserForm添加到项目中。
-
保存并退出Excel
-
启动Excel,然后立即单击Firefox或任务栏中的任何选项卡以激活Excel以外的任何窗口。
- 等等,然后看Excel启动,直到它崩溃。
-
重启Excel后,它说:
Excel经历了’foobar’加载项的严重问题。 如果您多次看到此消息,则应禁用此加载项并检查是否有可用的更新。 要禁用此加载项吗?
详细信息/调查结果:
- Excel版本:12.0.6535.5002,SP2 MSO 12.0.6425.1000
- 0xA3在他的评论中报道他可以在32位机器上用Excel 12.0.6535.5002,SP2 MSO 12.0.6535.5002重现它
- 我试过使用2007加载项(XLAM)。 同样的问题,除了它甚至崩溃,如果它不包含任何UserForms。
- 0xA3报告说,在他的64位机器上它工作,但Excel仍然意外弹出(但不会崩溃)。 到目前为止,我的测试人员的两台机器也是如此。
这是我想在C#中使用的代码(请注意,问题可以完全独立于任何C#应用程序重现,见上文)。
Process.Start(new ProcessStartInfo("excel.exe") { WindowStyle = ProcessWindowStyle.Minimized });