Surround all your Application_Workbook code with try-catch-finally and release the workbook object. eg.
void Application_WorkbookOpen(Excel.Workbook Wb) {
try {
// Do Stuff
} catch (Exception) {
// Probably Eat it
} finally {
Marshal.ReleaseComObject(Wb);
}
}
Here is a reference ...