PIA - это оболочки взаимодействия .NET. Это означает, что в деструкторе объекта (или Dispose - я не помню) будет автоматически обрабатывать его счетчик ссылок. Хитрость в том, что некоторые ссылки не будут освобождены, пока не будет выполнен сборщик мусора. Это зависит от того, что создает объект COM. Например, COM-объект, открывающий курсоры базы данных, будет поддерживать эти курсоры в памяти до тех пор, пока счетчик ссылок на эти курсоры не будет освобожден. При взаимодействии .NET / COM ссылки не освобождаются до тех пор, пока не выполнится сборщик мусора или вы не освободите ссылку явно с помощью Marshal.ReleaseComObject (или FinalReleaseComObject).
Лично я не работал с PIA Microsoft Office, но в большинстве случаев вам не нужно иметь для явного освобождения ссылок. Только когда ваше приложение начинает блокировать другие ресурсы или происходит сбой, вы должны начать подозревать висячие ссылки.
РЕДАКТИРОВАТЬ: Если вы столкнетесь с ситуацией, когда вам нужно очистить объекты COM / Interop, используйте Marshal.FinalReleaseComObject - который берет счетчик ссылок до нуля, а не просто уменьшает его на единицу и установите ссылку на объект на ноль. Вы можете явно форсировать сборку мусора (GC.Collect), если вы действительно хотите быть в безопасности, но будьте осторожны с выполнением GC слишком часто, так как это вызывает заметное снижение производительности.