1

C# WinForms アプリケーション内から Excel を起動しますProcess.Start(...)(これには理由があります)。ユーザーの気を散らすことなくバックグラウンドで起動したいので、最小化または非表示で起動しようとしています。どちらの場合も、非常に奇妙な動作が発生します。

数秒後、Excel はウィンドウを復元し (非表示の場合でも表示します)、「Microsoft Office Excel で問題が発生したため、閉じる必要があります。(Win XP のクラッシュ メッセージ)」と言ってクラッシュします。

デスクトップのショートカット アイコンをダブルクリックして Excel を手動で起動し、すぐに別のアプリケーション ウィンドウに切り替えた場合も同じことが起こり、Excel ウィンドウが起動時にフォーカスを失います。

この問題は、 XLA アドインに UserForm が含まれている場合にのみ発生します。UserForm を削除すると、問題はなくなります。アドインを削除すると、問題はなくなります。

それがそうである限り、どんな助けも大歓迎です


再現する手順:

  • 空のブックで 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 が予期せずポップアップします (クラッシュはしません)。これまでのところ、私のテスターの2台のマシンにも同じことが当てはまります。

これは、私が C# で使用したかったコードです (問題は、C# アプリとは完全に独立して再現できることに注意してください。上記を参照してください)。

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

0 に答える 0