I'm getting close to what I want but not quite there. I can get it to work if I'm just adding a ChartObject to the current sheet, but I want to create a new Chart sheet and can't seem to get the declarations and/or casting to come out right (even if I turn off Option Strict) so it leaves the Excel process running.

vb.net Code:
  1. Dim xlApp As Excel.Application = Nothing
  2.         Dim xlWorkBooks As Excel.Workbooks = Nothing
  3.         Dim xlWorkBook As Excel.Workbook = Nothing
  4.         Dim xlWorkSheet As Excel.Worksheet = Nothing
  5.         Dim xlWorkSheets As Excel.Sheets = Nothing
  6.         Dim xlRange1 As Excel.Range = Nothing
  7.         Dim xlInterior As Excel.Interior = Nothing
  8.         Dim xlColumns As Excel.Range = Nothing
  9.  
  10.         xlApp = New Excel.Application
  11.         xlApp.DisplayAlerts = False
  12.         xlWorkBooks = xlApp.Workbooks
  13.         xlWorkBook = xlWorkBooks.Open(FileName)
  14.  
  15.         xlApp.Visible = False
  16.  
  17.         xlWorkSheets = xlWorkBook.Sheets
  18.         xlWorkSheet = CType(xlWorkSheets(1), Excel.Worksheet)
  19.  
  20.         'process the data for the chart into Sheet1
  21.  
  22.         Dim xlChart As Excel.Chart = Nothing
  23.         xlChart = CType(xlWorkBook.Charts.Add(After:=xlApp.ActiveSheet), Excel.Chart)

The last line is what causes me problems. I tried several different ways to declare the Charts collection (for example, xlCharts = CType(xlWorkBook.Charts, Excel.Charts), but it would eventually give me an error.
This operation failed because the QueryInterface call on the COM component for the interface with IID '{0002086D-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002
A minor complaint is that it is also not putting the Chart sheet after the ActiveSheet even though that is returning "Sheet1" as it should.

So what am I missing?