こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VS2003.NET(C#)からのEXCELのプロセス解放

ご存知の方がいたら教えて下さい。

【動作環境】
OS:WINDOWS XP(SP2)
VisualStadio20003.NET(C#)
EXCEL2003

VS.NETのプロジェクトメニューの参照の追加で「Microsoft Excel 11.0 Object Library」を追加してあります。

セルの更新を行った場合に、プロセスが解放されずに残ってしまいます。
(セルの更新を行っている行を実行しない場合にはプロセスは解放されます)
いろいろ調べてはみたのですが、どうも原因がつかめません。
ご存知の方がいましたら教えてください。
(以下ソースコードになります)

Excel.Application app;
Excel.Workbook book;
Excel.Worksheet sheet;
Excel.Workbooks books;
Excel.Sheets sheets;
Excel.Range range;

app = new Excel.Application();
books = app.Workbooks;
book = books.Add("c:\\inetpub\\wwwroot\\ExcelData.xls");
sheets = book.Worksheets;
sheet = (Excel.Worksheet)sheets["Sheet1"];

range = sheet.get_Range("A1","A1");
range.Value2 = "テストです";

// 解放
Marshal.ReleaseComObject(range);
Marshal.ReleaseComObject(sheet);
Marshal.ReleaseComObject(sheets);
Marshal.ReleaseComObject(book);
Marshal.ReleaseComObject(books);
// Excel終了
app.Quit();
Marshal.ReleaseComObject(app);


よろしくお願いします。

投稿日時 - 2008-10-30 17:46:43

QNo.4441623

すぐに回答ほしいです

質問者が選んだベストアンサー

Bookを開放する前に Close処理をしましょう
セルを更新したので セーブするかどうかのダイアログが非表示で出たままなのでは無いでしょうか

Marshal.ReleaseComObject(sheets);
book.Close(false, false, missing);
Marshal.ReleaseComObject(book);
といった具合で ・・・

投稿日時 - 2008-10-30 18:19:33

お礼

無事にプロセスが終了されました!!
ありがとうございました!!

マイクロソフトが推奨していない為か、いろいろなサイトを見ても細かな部分が違っていたりして困惑していました。
(環境によっても違うようだし...)

これで作業が進められます。今回はありがとうございました!

投稿日時 - 2008-10-30 19:06:45

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問