6

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();
4

5 に答える 5

13

Excel ワークブックを閉じる際に、次のステートメントを使用できます。

object misValue = System.Reflection.Missing.Value;
xlWorkBook.Close(false, misValue, misValue);
于 2013-11-14T12:27:37.850 に答える
3

これを試して:

excelApp.DisplayAlerts = False;
//save and close your workbook
excelApp.DisplayAlerts = True;
于 2013-11-14T13:27:14.947 に答える
2

ワークブックを閉じるときにこれを行います。

_excelWorkBook.Close(true);
于 2013-11-14T12:19:42.040 に答える