title: Loading all COM types of Excel dynamically?
body: <p><strong>I want to explore this path of working with Excel dynamically.</strong>
  <hr>
  I want to use Excel in my C# application without including dlls and stuff. I would just check first if the required Excel version is installed and run it.</p>
  
  <p>First I want to get all the types I need but I can't get hold of them:</p>
  
  <pre><code>// works
  Type typeExcel = Type.GetTypeFromProgID("Excel.Application");
  object excel = Activator.CreateInstance(typeExcel);
  object workbooks = typeExcel.InvokeMember("Workbooks", BindingFlags.GetProperty, null, excel, null);
  
  // this doesn't work, returns null
  Type typeWorkbooks = Type.GetTypeFromProgID("Excel.Workbooks");
  </code></pre>
  
  <p>Without the correct types I can't invoke members. So what am I doing wrong ? How do I load all types I need and know that they are there ? My current Excel version is 2003.
  <hr>
  <strong>Reasons for this:</strong> If I include COM Libraries that are not installed on the target system my application wont start. If I load them dynamically I can check for their existence and notify the user about missing functionality.</p>