In my case the release of all Office Interop references was a hard one. Calls like above worksheet = workbook.Sheets.Add returns a worksheet ok, but it secretly creates a new instance of the.Sheets collection without our explicit reference.
Microsoft.office.interop.word Example C#
The solution, it seems, is to create explcit reference to anything you expect will be objects implicitly created.A test that ALL references are disposed the Excel.exe process should terminate as user closes Excel while your application is still upp an running.