}よろしくお願いいたします。票0改訂1つの処理の中で生成から終了まで完結しているなら、メインの処理も含めてもっと簡単に出来ます、という記事を見つけました。使う方が良いようです。アンマネージドリソースをDisposeパターンで管理するときどきSystem.Runtime.InteropServices.Marshal.ReleaseComObject(obj);の必要性やについての議論や、ひどい場合は「これを書かないからEXCEL.EXEプロセスが残ってしまう」といった誤った記述がされているサイトがありますが注意してください。Workbook.Close()でワークブックを閉じて、Application.Quit()でアプリケーションを閉じさえすればEXCEL.EXEプロセスは正常に終了されます。Marshal.ReleaseComObjectは、.NETからのCOMオブジェクト(=Excelを操作するためのインターフェイス)を解放するためのメソッドで、これの有無にかかわらずExcelはしっかりと終了してくれます。リソースの解放をしたらそれ以降はExcelの操作をしないわけですから、COMオブジェクトを解放しておくべきでしょう。{}このように書くだけで、usingブロックを抜けたときにExcelがしっかりと終了されます。この場合はDispose()メソッドが呼ばれることによりExcelの終了処理が行われていることがわかります。他にも、敢えてDispose()を呼び出さないようなコードを書いても、ちゃんとアプリケーション終了時にGCがファイナライザを呼び出してExcelが終了されることが分かります。このDisposeパターンは確実にアンマネージドリソースを解放する方法として有効でしょう。※上記のDisposeパターンのプログラムは、Disposeパターンの説明をするために書いているものでExcelを終了させるうえで完璧ではない点に注意してください。Excelを開いている間にファイルに変更を加え、保存せずにDisposeメソッドが呼ばれるとExcelのメッセージボックスで終了処理がブロックされます。利用者は、各自アレンジして使ってください。類似の記事がこれです。使わない素のコーディングの時にはどうすれば良いかを解説した記事があります。それらではしっかりReleaseComObject、nothing/null代入、GC.Collect等も使うように、と書いてあります。2005の古い記事です。違う形のNAR()も記述されています。プロジェクトを作成するこうした記事も関連しているでしょう。言及は無いようですね。関して調べた情報です。Methodを使ったサブルーチンのようです。MRComObjectはMarshal.ReleaseComObjectの短縮形として名付けたのではないでしょうか。方が良いかもしれません。ReleaseComObject自身の注釈に以下の記述があります。したがって、がReleaseComObject絶対に必要な場合にのみ、を使用してください。コンポーネントが解放されるようにするには、代わりにFinalReleaseComObjectメソッドを使用することを検討してください。同様に以下の記事の解決マーク付き回答のコメントにも記述があります。Release)を管理しようとしている場合は、それを行うべきではありません。COMオブジェクトを確定的に解放する場合は、おそらくFinalReleaseComObjectを使用する必要があります。たどっていった先のVBの記事ではオプション指定で両方を使い分けています。実装が書かれていないので(推測はつきますが)、こちらが、ソースになります。Subただ、このソースも自分で書いたわけではないので、具体的な説明ができません。すみません、一応そして、同じく対象はExcelですが、この辺の記事の記載がより新しくなっているようです。...ただし、上記2番目記事の最後に以下のような注意があるので、そのソースは引用しません。紹介先を参照してください。等にもご迷惑をおかけする事にもなりますので、絶対に転載されないようにお願い致します。名前は、変更しておりませんが中身が何度となく変更しておりますので、転載先まで変更する事ができず、問題があっても困りますので、必要ならリンクを貼るようにして下さい。使用すれば、全て解放されるかのように誤解されて使用されている場合もあるので、よく読んでからご使用下さい。記事の最初の方にも、以下のように繰り返し注意が書いてあります。読んでから実行願います。起動・終了に関する設定は、実行環境用とテスト環境用の両方を掲載しておりますので。できれば、開発時は、テスト環境用の起動・終了に関する設定を使って頂いた方がプロセスの解放状況がよく解りますので便利かと思います。ご覧になってから試すようにして下さい。個の銅バッジいつもありがとうございます。見たところですが、結果的には『特に行わなくてもよい処理』ということなのでしょうか。C#の場合はfinallyでそれまでの解放処理を行っておけば、内部的に閉じなくなるといったことはないのでしょうか。VBのこーどだから必要で、C#なら必要ないというのならよいのですが、そうでない場合は、最も古い記事のNARのメソッドを行うといったことなのでしょうか。このメソッドなら解り易いので組み込めそうですが。すみません、自分でもじっくり記事を読むべきだとは解っているのですが...。さんの場合は、1つのメソッドの中で生成から終了まで完結しているので、メインの処理も含めてもっと簡単に出来ます、という記事を見つけました。これを含めて回答にも追記しておきますので参照して下さい。5:50ありがとうございました。usingで済むとは意外でした。終了処理がしっかりされていれば、この部分のメソッドもいらないと思っていましたが、このようにusingを使用するほうが文系的にもしっくりきます。試してみることにします。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。