Categories: C#

C# で、Excelを開いて閉じるときに止まってしまう問題の解決

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; i 

WorkBook.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

nakaike

Share
Published by
nakaike
Tags: Excel