C# で、Excelを開いて閉じるときに止まってしまう現象が。
どうやら、閉じるときに、「保存しますか?」ダイアログが開いてしまってたのが原因らしい。
たとえば、こんなコード。
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application(); //エクセルを非表示 ExcelApp.Visible = false; //エクセルファイルを開く Microsoft.Office.Interop.Excel.Workbook WorkBook = ExcelApp.Workbooks.Open("c:text.xlsx"); //3シート目を選択 Microsoft.Office.Interop.Excel.Worksheet sheet = WorkBook.Sheets[3]; sheet.Select(); string text = ""; //B列の最後の行を取得 int row_end = sheet.get_Range("B1").End[Microsoft.Office.Interop.Excel.XlDirection.xlDown].Row; if (row_end 0) { for (int i = 0; iWorkBook.Close();
のところで止まってしまってました。
で、解決策を探したところ、WorkBook.Close(false, Type.Missing, Type.Missing);
にするといいらしい。
参考→https://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.excel.workbook.close.aspx閉じるときに保存するかのダイアログが表示されずに閉じることができます。
ちなみに、Type.Missing はC#では省略できないそうです。
なんでも、VBA用につくられてるので、C#では引数を省略しちゃいけないそうで。参考になりました→http://d.hatena.ne.jp/ron_s-nakazawa/20120924/1348452525