1

我使用 C# WinForms 应用程序从我的 C# WinForms 应用程序中启动 Excel Process.Start(...)(这是有原因的)。我想在后台启动它,而不会分散用户的注意力,所以我尝试以最小化或隐藏的方式启动它。在这两种情况下,我都会遇到一个非常奇怪的行为:

几秒钟后,Excel 恢复窗口(如果它被隐藏,甚至使其可见)然后崩溃说:“Microsoft Office Excel 遇到问题,需要关闭。(Win XP 崩溃消息。)”

如果我通过双击桌面上的快捷图标手动启动 Excel,然后立即切换到另一个应用程序窗口,则会发生同样的事情,这样Excel 窗口在启动过程中就会失去焦点。

仅当任何XLA 加载项包含 UserForm时,才会出现此问题。如果我删除用户窗体,问题就会消失。如果我删除加载项,问题就会消失。

任何帮助表示赞赏,只要它是

  • 解释为什么会发生这种情况
  • 我可以在加载项中更改的内容
  • 一种解决此错误的方法(不使用 COM)
  • 建议使用 COM。(请参阅此处以了解我为什么不这样做。)
  • 不是更新 Excel 的建议(我不能)

重现步骤:

  • 使用空工作簿启动 Excel 2007。
  • 另存为...
    • 文件类型:Excel 2003 加载项 (*.xla)
    • 位置:%APPDATA%\Microsoft\Excel\XLSTART\foobar.xla
  • Alt + F11(打开 VBA 编辑器)
  • 将用户窗体添加到项目中。
  • 保存并退出 Excel

  • 启动 Excel,然后立即单击 Firefox 或任务栏中的任何选项卡以激活 Excel 以外的任何窗口。

  • 等待并观察 Excel 启动,直到它崩溃。
  • 重新启动 Excel 后,它说:

    Excel 在使用“foobar”加载项时遇到了严重问题。如果您多次看到此消息,则应禁用此加载项并检查是否有可用更新。是否要禁用此加载项?


细节/发现:

  • Excel 版本:12.0.6535.5002,SP2 MSO 12.0.6425.1000
  • 0xA3 在他的评论中报告他可以使用 Excel 12.0.6535.5002、SP2 MSO 12.0.6535.5002 在 32 位机器上重现它
  • 我尝试过使用 2007 插件 (XLAM)。同样的问题,除了如果它不包含任何用户窗体,它甚至会崩溃。
  • 0xA3 报告说在他的 64 位机器上它可以工作,但是 Excel 仍然意外弹出(但没有崩溃)。到目前为止,我的测试人员的两台机器也是如此。

这是我想在 C# 中使用的代码(请注意,可以完全独立于任何 C# 应用程序来重现该问题,请参见上文)。

Process.Start(new ProcessStartInfo("excel.exe") 
    { WindowStyle = ProcessWindowStyle.Minimized });
4

0 回答 0