2

Microsoft.Office.Interop.Excelライブラリを使用して、C# アプリケーション内から Excel にデータをエクスポートしています。

sheet.Cells[currentRow, 1])無効なcurrentRow値で呼び出すと、System.Runtime.InteropServices.COMException次のメッセージが表示されます。

"Exception from HRESULT: 0x800A03EC"

ErrorCode-2146827284

しかし、書き込み保護されたファイルに保存するように Excel を注文した場合とまったく同じエラーコードを受け取りました。

Excel から受け取った COMExceptions を区別して、それに応じて処理する方法はありますか? ユーザーに「Excel での作業中に問題が発生しました。申し訳ありません。クソ野郎」というメッセージを残したくありません。

4

2 に答える 2

1

数年間 Excel 相互運用機能を使用してきましたが、方法が見つかりません。最善の策は、潜在的な問題が発生する前にチェックすることです。もっと良いものがあればいいのですが、私の知る限りではありません。

EDIT
VBA内でさまざまなエラーをトラップできるため、Excel自体がさまざまなエラーを区別しますが、.NETはこれらすべてのエラーを単一のCOMExceptionクラスにまとめ、詳細情報を提供しないと考えています。

VBA エラー コードについて詳しく説明している記事を見つけました:
http://support.microsoft.com/kb/146864

于 2012-09-19T13:26:44.323 に答える
1

a の全体的なポイントはCOMException、COM 側から戻ってくるということです。通常、COM では、エラー状態はHRESULT、特定のメソッドからの戻り値が 0 でないことによって通知されます。

残念ながら、これは COM の "コントラクト" に組み込まれたエラー情報の範囲です。したがって、エラー値が表示されます (0x800A03EC は -2146827284 と同じ値です)。.NET 側にはこれ以上の情報はありません。

于 2012-09-19T13:31:49.357 に答える