加载项在启动最小化时使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 });