C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: C# Excelのプロセスが残ります。


(過去ログ 95 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■56429 / inTopicNo.1)  C# Excelのプロセスが残ります。
  
□投稿者/ サム (1回)-(2011/01/13(Thu) 17:51:54)

分類:[C#] 

2011/01/14(Fri) 08:34:59 編集(投稿者)

下記のプログラムを実行するとExcelのプロセスが残ったままになってしまうのですが、
残さないようにするにはどうしたら良いでしょうか?

workbookオブジェクトを追加してもプロセスが残ります。

宜しくお願い致します。


         Excel.Application oXls; // Excelオブジェクト
Excel.Workbooks oWBooks; ←追加
         Excel.Workbook oWBook; // workbookオブジェクト
         Excel.Sheets oWSheets;
         Excel.Worksheet owWorksheet;
         oXls = new Excel.Application();
         oXls.Visible = false; // 確認のためExcelのウィンドウを表示する
           oWBooks = oXls.Workbooks; ←追加
         // Excelファイルをオープンする
         oWBook = oWBooks.Open(
filename, // オープンするExcelファイル名
Type.Missing, // (省略可能)UpdateLinks (0 / 1 / 2 / 3)
Type.Missing, // (省略可能)ReadOnly (True / False )
Type.Missing, // (省略可能)Format
// 1:タブ / 2:カンマ (,) / 3:スペース / 4:セミコロン (;)
// 5:なし / 6:引数 Delimiterで指定された文字
Type.Missing, // (省略可能)Password
Type.Missing, // (省略可能)WriteResPassword
Type.Missing, // (省略可能)IgnoreReadOnlyRecommended
Type.Missing, // (省略可能)Origin
Type.Missing, // (省略可能)Delimiter
Type.Missing, // (省略可能)Editable
Type.Missing, // (省略可能)Notify
Type.Missing, // (省略可能)Converter
Type.Missing, // (省略可能)AddToMru
Type.Missing, // (省略可能)Local
Type.Missing // (省略可能)CorruptLoad
));
oWSheets = oWBook.Sheets;
foreach (Excel.Worksheet sheets in oWSheets)
{
int sitosakuzyo = 2;
owWorksheet = (Excel.Worksheet)oWSheets[sitosakuzyo];
oXls.DisplayAlerts = false;
owWorksheet.Delete();
oXls.DisplayAlerts = true;
}
owWorksheet = (Excel.Worksheet)oWSheets[1];
oWBook.Save();
Marshal.ReleaseComObject(owWorksheet);
Marshal.ReleaseComObject(oWSheets);
Marshal.ReleaseComObject(oWBook);
Marshal.ReleaseComObject(oWBooks);
oXls.Quit();
Marshal.ReleaseComObject(oXls);
GC.Collect();
owWorksheet = null;
oWSheets = null;
oWBook = null;
oXls = null;
引用返信 編集キー/
■56430 / inTopicNo.2)  Re[1]: C# Excelのプロセスが残ります。
□投稿者/ Blue (41回)-(2011/01/13(Thu) 17:58:44)
>oWBook = (Excel.Workbook)(oXls.Workbooks.Open(
ここでは?
Workbooksオブジェクトを変数に入れてMarshal.ReleaseComObjectする必要がありそう。
引用返信 編集キー/
■56441 / inTopicNo.3)  Re[2]: C# Excelのプロセスが残ります。
□投稿者/ マサ (1回)-(2011/01/13(Thu) 22:25:47)
No56430 (Blue さん) に返信
> >oWBook = (Excel.Workbook)(oXls.Workbooks.Open(
> ここでは?
> Workbooksオブジェクトを変数に入れてMarshal.ReleaseComObjectする必要がありそう。

返信ありがとうございます。

どのように変数に入れたらよろしいでしょうか?

宜しくお願い致します。

引用返信 編集キー/
■56442 / inTopicNo.4)  Re[3]: C# Excelのプロセスが残ります。
□投稿者/ サム (2回)-(2011/01/13(Thu) 22:34:51)
すいません、名前間違えました。
引用返信 編集キー/
■56446 / inTopicNo.5)  Re[4]: C# Excelのプロセスが残ります。
□投稿者/ サム (3回)-(2011/01/14(Fri) 08:36:18)
No56430 (Blue さん) に返信

Workbooksオブジェクトを変数に入れてMarshal.ReleaseComObjectをやってみたんですが、
ダメでした。

引用返信 編集キー/
■56447 / inTopicNo.6)  Re[5]: C# Excelのプロセスが残ります。
□投稿者/ マサヤ (209回)-(2011/01/14(Fri) 09:14:57)
foreachの中で使用しているsheetsを解放してあげればいいのではないでしょうか?
引用返信 編集キー/
■56517 / inTopicNo.7)  Re[6]: C# Excelのプロセスが残ります。
□投稿者/ サム (4回)-(2011/01/18(Tue) 08:31:15)
No56447 (マサヤ さん) に返信
> foreachの中で使用しているsheetsを解放してあげればいいのではないでしょうか?

返事ありがとうございます。
パソコンのメモリが悪く、他のパソコンでテストしたら、解放出来ました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -