Excel Interop COM オブジェクトを使用しています。私は、Excel アプリケーションを開いたり閉じたりしてから、Excel ワークブックとシートを開く方法を書いています。それらの作業が完了したら、アプリケーションとワークブックの両方を閉じます。私の問題は、このメソッドを数回繰り返し呼び出すことができ、シートとアプリを閉じるときに、行った変更を保存する場合に Excel アプリケーションからメッセージが表示されることです。「いいえ」を押すまでメソッドが動かなくなりますが、毎回押すようにユーザーに指示することはできません。
このメッセージを受信せずにアプリケーションを閉じるか、少なくともコードで応答するにはどうすればよいですか?
これらは、アプリケーションとワークブックを閉じるために使用している方法です。
private void FreeWorkSheetResources(Excel.Worksheet sheet)
{
Marshal.ReleaseComObject(sheet);
sheet = null;
}
private void FreeWorkBookResources()
{
if (_excelSheets != null)
{
Marshal.ReleaseComObject(_excelSheets);
_excelSheets = null;
}
_excelWorkBook.Close();
Marshal.ReleaseComObject(_excelWorkBook);
_excelWorkBook = null;
}
private void FreeApplicationResources()
{
_app.Quit();
Marshal.ReleaseComObject(_app);
_app = null;
GC.Collect();
}
そして、これは私がそれらを使用している方法です:
if (_app == null)
{
_app = new Excel.Application();
}
if (_excelWorkBook == null)
{
_excelWorkBook = GetWorkBook(_filePath);
}
....
....
FreeWorkBookResources();
FreeApplicationResources();