C# または VB.NET で Excel が終了しないけど、どうしたらいいですか?
この手の質問は技術系のコミュニティで後を絶ちません。
C# または VB.NET で Excel.Application (というか COM) を扱う時は、
明示的に参照の解放をしなければなりません。
解放しないと、プロセス内に居座り続けるため Excel は終了しないです。
(タスク マネージャを見ると、Excel.exe がプロセスに残ったままになる)
とりあえず、参照はすべて変数に取りましょう。
必要ではなくなった時点で、System.Runtime.InteropServices.Marshal クラスにある、
ReleaseComObject メソッドで解放してください。
それと、例外発生時の対応として Try ~ Finally を使用して、
解放を保証することを強くお勧めします。
ベタに書くと以下の記事のように悲惨な状況になりますが、参考になると思います。
COM オブジェクトを解放する
http://jeanne.wankuma.com/tips/programing/releasecom.html