При использовании DotNet-сборки Excel закрываю следующим образом -
X++:
excelDocument.closeDocument(false, fullFileNamePath);
excelDocument = null;
CodeAccessPermission::revertAssert();
new InteropPermission(InteropKind::ClrInterop).assert();
System.GC::Collect();
System.GC::WaitForPendingFinalizers();
CodeAccessPermission::revertAssert();
Все работает и в обычном, и в пакетном режиме.