2

C# 経由で VBA/Excel マクロを呼び出すことができます。ユーザー (私の場合は C# プログラム) が無効な値を入力すると、メッセージ ボックスが表示されます。これは問題ありません。C# を介してタイムアウトし、それに基づいて決定を下す (つまり、メッセージ ボックスが表示されるかどうかを決定する) ことができるからです。問題は、メッセージ ボックスが表示されたときに Excel が正しく閉じないことです。このコードを使用してExcelを閉じています:

excelApp.DisplayAlerts = false;
Marshal.FinalReleaseComObject(someSheet);
excelWorkbook.Close(Type.Missing, Type.Missing, Type.Missing);
Marshal.FinalReleaseComObject(excelWorkbook);
GC.Collect();
GC.WaitForPendingFinalizers();

すべてが閉じますが、Excel とメッセージ ボックスは開いたままです。C# からメッセージ ボックスを閉じる方法はありますか?

4

2 に答える 2

0

より良い解決策はこちらです。

使用する

excelApp.DisplayAlerts = false 

Excel アプリがメッセージ ボックスを作成するのを回避し、アプリで必要に応じて処理できるようにします。

于 2015-08-19T17:39:45.380 に答える