2

C#プログラムとOLEを介してExcel2007のデータ接続を更新します。ほとんどの作業は、単一のWorkbooks.RefreshAll()ステートメントによって実行されます。

スプレッドシートを更新する性質と同様に、さまざまな問題が発生する可能性があります。更新プロセス中に、プログラムは「ファイル'|'からデータを読み取ることができません」に関するダイアログボックスのエラーメッセージと、「ピボットテーブルレポートの重複」に関するメッセージを表示できます。これらは両方とも致命的であり、これらのエラーをキャッチして、エラーでプログラムを終了できるはずです。

残念ながら、私はこれらの問題を見つけることができないようです。代わりに、私の自動プログラムは、私がやって来てダイアログでEnterキーを押すまで座っています。

ユーザーに表示するのではなく、Excelダイアログボックスに表示されるエラーをプログラムでキャッチできるかどうか誰かが知っていますか?

4

1 に答える 1

9

Application.DisplayAlerts プロパティを False に設定することをお勧めします。つまり、Excel.Application オブジェクト変数の名前が「xlApp」であると仮定すると、次のことを行うだけで済みます。

xlApp.DisplayAlerts = false;

これにより、各ダイアログ ボックスに対して既定の応答が行われることに注意してください。これは、通常、必要な応答です。(これを回避する良い方法はありません。DisplayAlerts = True のままにし、SendKeys を使用することが他の唯一のオプションかもしれませんが、見苦しく、エラーが発生しやすくなります。)

OLE オートメーションを介してこの呼び出しを行っているため、この呼び出しはクロスプロセスであり、したがって、DisplayAlerts の設定は、変更するまで保持されます。(インプロセスで VBA を介して呼び出された場合、ルーチンが完了すると自動的に true に戻ります。コマンドバーまたはリボン コントロールを介して呼び出された VB.NET または C# アドインにも同じ動作が適用される可能性がありますが、必要な場合があります。確認するためにテストします。)

于 2008-10-07T21:10:52.177 に答える