The first thing I'd look at would be whether you are referencing the right interop version for your installed version of Excel. I'd also be inclined to switch over to late binding and see whether or not the problem persisted, after all late binding is ideal for working with Excel in this fashion.

To switch to late binding, set Option Strict OFF for the code page, then remove the reference to the Excel interop entirely. Naturally this will result in a series of undefined type errors. For all those types, change them to Object. By doing this, the program will use whichever version of the interop happens to be installed. It will fail if the methods used were changed between the version you developed the code under and the version you currently have installed, but changes to the interop are rare, and almost always involve changes to things in the obscure, rarely visited, corners of the interop. The one place I have seen the interop change (and I haven't looked extensively) had to do with programmatically creating pivot tables in spreadsheets. All the standard stuff, such as what you have shown, will work.