C# 加载项在启动时使Excel崩溃

C# 加载项在启动时使Excel崩溃,c#,process,excel-2007,minimize,xla,C#,Process,Excel 2007,Minimize,Xla,我使用Process.start(…)(这是有原因的)从我的C#WinForms应用程序中启动Excel。我想在后台启动它,而不会分散用户的注意力,所以我尝试最小化或隐藏启动它。在这两种情况下,我都经历了一种非常奇怪的行为: 几秒钟后,Excel将恢复窗口(即使隐藏窗口也会使其可见),然后崩溃,说:“Microsoft Office Excel遇到问题,需要关闭。(Win XP崩溃消息)。” 如果我在桌面上双击Excel的快捷方式图标手动启动Excel,然后立即切换到另一个应用程序窗口,则会发生

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

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

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

只有当任何XLA加载项包含用户表单时,才会出现此问题。如果删除UserForm,问题就会消失。如果删除外接程序,问题就会消失

感谢您的帮助,只要是

  • 解释为什么会发生这种情况
  • 我可以在外接程序中更改某些内容
  • 如何解决此错误的方法(不使用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)。同样的问题,只是如果它不包含任何用户表单,它甚至会崩溃
  • 0xA3报告说,在他的64位机器上,它工作正常,但Excel仍然意外弹出(但没有崩溃)。到目前为止,我的测试人员的两台机器也是如此
这是我想在C#中使用的代码(请注意,问题可以完全独立于任何C#应用程序重现,请参见上文)


我可以复制这个,但我还不知道解决方法。@0xA3:您有什么Excel版本?“我已经把我的问题加进去了。”奇科多罗。我无法重现这个错误。我使用的是VS2008.NET3.5SP1,操作系统是WindowsXPSP3,Excel2007版本是
12.0.6504.5001
。看起来很糟糕。。。我必须使用Excel 12.0.6535.5002、SP2 MSO 12.0.6535.5002和Win7 64位、Win7 32位这两种格式。在32位操作系统上Excel正在崩溃,在64位操作系统上没有问题。看起来这要么是配置问题,要么与操作系统有关。但是,Excel窗口在正常运行的情况下被激活并恢复,尽管
processWindowsStyle.Minimized
。噢,Excel中似乎有个bug。我担心没有人能帮我。。。
Process.Start(new ProcessStartInfo("excel.exe") 
    { WindowStyle = ProcessWindowStyle.Minimized });