The attached file might give you an idea how to go about it. The source uses the managed objects and not the Interop objects. It just goes thru each layout in the dwg and prints the number, width, and height of each viewport.
One thing to note, the ARX Documentation states for the method 'AcDbLayout::getViewportArray()':
{color:#333333}{color:#333333}"This function returns an array of AcDbObjectIds of all the AcDbViewports that exist in the AcDbLayout's paperspace. The first ID in the list will be the paperspace viewport. If the list returned is empty, then this AcDbLayout has never been switched to (activated). The list is updated each time a layout is activated, and kept up-to-date while that layout is active (whenever viewports are added or deleted)."
{color}{color}That would apply to the 'Layout.GetViewports()' method call in VB or C#. So keep in mind that a Layout has to have been 'activated' to return any of it's viewports.