私はデバッグしているいくつかのコードで問題に遭遇しています。 Excel interopは、ブックからいくつかの値を抽出するために使用されます。ただし、プログラムが終了してもExcelは開いたままです。 、私は伝統的な解決策を試してみたが、それはまだコードが実行される場合Excelプロセスはinteropの後も開いたままです。従来のメソッドは動作しません
private void TestExcel()
{
Excel.Application excel = new Excel.Application();
Excel.Workbooks books = excel.Workbooks;
Excel.Workbook book = books.Open("C:\\test.xlsm");
book.Close();
books.Close();
excel.Quit();
Marshal.ReleaseComObject(book);
Marshal.ReleaseComObject(books);
Marshal.ReleaseComObject(excel);
}
のコードであっても、このシンプルな作品は、複数のファイル(XLSM、XLSXで実行中のプロセスを維持し、すべてのマシン上で開いているExcelへの参照を保持しますxls)。今すぐ開かれたExcelプロセスを強制終了するための回避策がありますが、私は自分の正気のためにこれを働かせる方がはるかです。
私はそれをWorkbook
変数に絞り込んだことを付け加えておきます。 books.Open()
へのコールを削除し、book
への参照をすべて削除すると、正常に終了します。
テストしたときにコードが正常に機能しましたが、実行時に例外が発生する可能性がありますか? – msmucker0527