Volanie sheet.Cells[row, column] vráti COM objekt typu Range, ktorý treba tiež uvoľniť.
Na prácu s COM objektami mám napísaný takú pomocnú wrapper triedu, s ktorou sa pracuje takýmto spôsobom:
using (var application = new ComObject("Excel.Application"))
using (var workbooks = application.GetComProperty("Workbooks"))
using (var workbook = workbooks.InvokeComMethod("Open", ...))
using (var sheets = workbook.GetComProperty("Sheets"))
using (var sheet = sheets.GetComProperty("Item", sheetName))
{
  ...
}
FinalReleaseComObject spraví v podstate to, že volá dokola ReleaseComObject, až pokým sa neuvoľnia všetky referencie. Osobne by som používal iba ten ReleaseComObject, pretože ak pracuješ s tým objektom ešte niekde inde, tak by si ho takto mohol omylom predčasne uvoľniť.
 
 
