I've searched everywhere for a solution to this and now I've got one I thought it was worth posting it here to save someone else alot of hastle.
My problem was with the following code (this is just a snippet):
xlBook = xlApp.Workbooks.Open(ExcelTemplate)
When this was running the EXCEL.EXE process didn't end until the VB app. was ended.
I changed the code to this:
Dim xlBooks As Excel.Workbooks
xlBooks = xlApp.Workbooks
xlBook = xlBooks.Open(ExcelTemplate)
And added the following to tidy up:
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
xlBooks = Nothing
I found out about it at http://support.microsoft.com/default.aspx?scid=kb;en-us;317109&Product=vbNET
My application works fine now, I hope it helps someone else.