• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:.NETでエクセル解放がうまくいきません.)

.NETでエクセル解放がうまくいかない理由と解決方法

このQ&Aのポイント
  • Excelを解放する際に発生する問題とその解決方法について説明します。
  • エクセル解放時に発生するエラーの原因と対処法を解説します。
  • .NETでエクセルを解放する方法についての詳しい説明をします。

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

  • ベストアンサー
  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

こんにちは、 私も、エクセルのオブジェクトの解放の問題になったときに 紹介されたページ http://hanatyan.sakura.ne.jp/dotnet/index.html 花ちゃん、コード見ると、このページにもたどり着いた様に 見受けられますが。 このページと、camputerさんのコードを見て 気づいた点として、 Dim xlSheets As Excel.Sheets = xlBook.Worksheets (注意)Sheetも宣言しますが、Sheetsも宣言しています。 がないですね。 そのせいか、 xlSheetsの表現が、WB.Worksheets に変わっています。 花ちゃんでは、 花ちゃんから、転載**************** 1.基本的に、下記のように、[.]が2つ連続で使用されたら解放できません。 誤り      xlRange = xlCells(1,1)     xlRange.Interior.Color = RGB(0, 255, 0)     '使った変数の解放処理(.NETからExcelの基本的な操作方法 参照の事)     MRComObject(xlCells)     MRComObject(xlRange) 正     xlRange = xlCells(1, 1)     Dim xlInterior As Excel.Interior     xlInterior = xlRange.Interior     xlInterior.Color = RGB(0, 255, 0)     MRComObject(xlInterior)     MRComObject(xlCells)     MRComObject(xlRange)      必ず、上記のように分解して変数に受けて、解放処理をして下さい。 ***************************************転載終了 WB.Worksheets.Countの表現を使っていますが。 花ちゃんからの転載に書いてある。[.]が2つ連続で使用されています。 ここは、WB.WorksheetsをxlSheetsで受けて、 xlSheets.Countに変えたほうが、良い様な気がします。 とうぜん、xlSheetsを、使っているので、他にもこれ用にコードを 変更しないと、いけないかも知れませんが。 後は、気がついた点は、ないです。 外していたら、ごめん。

camputer
質問者

お礼

 どうもありがとうございます.  分かりにくくてもうしわけございませ. 'For N_s = 1 To WB.Worksheets.Count のほうはコメントアウトしております. For Each xlSheet In WB.Worksheets が実行文になります.  しかしtom11様のご指摘で Dim xlSheet As Excel.Worksheetではなく Dim xlSheet As Excel.Worksheetsにしたところ 正常に解放されるようになりました.ご指摘どうもありがとうございました. 今からExcel.WorksheetとExcel.Worksheetsについて勉強してみます.  ほんとうにどうもありがとうございました.