次のコードは、プログラムが終了するまで、MicrosoftExcelのバックグラウンドプロセスを実行したままにします。
var excelApplication = new Application();
var workbooks = excelApplication.Workbooks;
var workbook = excelApplication.Workbooks.Open(file.FullName);
workbook.Close();
excelApplication.Workbooks.Close();
excelApplication.Quit();
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(excelApplication);
どうして?何が足りないのですか?
とった!
application.Workbooks!= application.Workbooks
このプロパティは変数を公開せず、値を生成します。したがって、Workbooksプロパティにアクセスするたびに、新しいCOMオブジェクトを作成します。
コードを修正しましたが、すべて順調です。みなさん、ありがとうございます。
var excelApplication = new Application();
var workbooks = excelApplication.Workbooks;
var workbook = workbooks.Open(pathToExcelWorkbook); // Fixed
workbook.Close();
workbooks.Close();
excelApplication.Quit();
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(excelApplication);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加