Nice article, but I have to say, my only experience with the Primary Interop Assembly (there's a reason that abbreviates to PIA!) with VB.NET was not pleasant:
Excel process could NOT be terminated gracefully.
I spent several hours looking online and trying increasingly intrusive methods to kill Excel after the .NET code was done with the Excel.Application. The only thing that worked was to grab a pointer to Excel and kill the process.
See, e.g., http://www.velocityreviews.com/forums/t86434-p2-excel-interop-from-asp-net-process-cant-be-killed.html. As a comment there says,
"Two years and a new version of Visual Studio, Office and .Net later, and this thread is still being used !"
I don't know if you've had any problems like this, but it sounds as if at least one poster, gary.humphryes, did.
Yours,
Rich