Excel Interop COMオブジェクトを使用しています。 私は、Excelアプリケーションを開いて閉じ、次にExcelワークブックとシートを開く方法を書いています。私は彼らに取り組んだ後、私はアプリケーションとワークブックの両方を閉じています。 私の問題は、このメソッドは繰り返し複数回呼び出すことができ、シートとアプリケーションが閉じるときに、私が行った変更を保存したい場合は、Excelアプリケーションからメッセージを取得します。方法は "いいえ"を押すまで立ち往生しますが、毎回押すようにユーザーに指示することはできません。ExcelでExcelアプリケーションを終了するメッセージを保存しないでInterop
このメッセージを受け取ることなく、または少なくともコードで回答することなくアプリケーションを終了するにはどうすればよいですか?
これらは私がアプリケーションおよびブックを閉じるために使用していた方法です:
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();
を@adilする
.Visible = flase
と.DisplayAlerts = False
感謝を設定して、あなたはワークシートの右側を上行っている変更を保存していませんか? –
私はワークシートからの読み取りであり、更新はしていません。私は何か変更を保存したいのかどうか私に尋ねる理由を知らない。 –
[ダイアログボックスなしでC#Excelワークブックを終了しようとしている]の複製(http://stackoverflow.com/questions/17413887/trying-to-exit -c-sharp-excel-workbook-without-a-dialog-box)を使用します。検索を使用してください。 – CodeCaster