Note: Forums will be making significant UX changes to address key usability improvements surrounding search, discoverability and navigation. To learn more about these changes please visit the announcement which can be found HERE.
COM Error when instantiating MSProject "ApplicationClass" object (Interop/C#/.NET)

Unanswered COM Error when instantiating MSProject "ApplicationClass" object (Interop/C#/.NET)

  • 24 พฤษภาคม 2553 13:55
     
      มีโค้ด

    Hi,

    Firstly, I hope I'm posting this in the right place - there's lots of info out there about using .NET and the COM Interops with Excel and Word - and I have written many applications using these methods - but not much on programming Project in this way.

    I am looking to create a Windows Forms program which opens an existing Project 2003 file - just the file; no server interaction whatsoever - processes the data it contains and then passes it on.  Sadly I'm falling at the first hurdle.  If I were doing Excel or Word I would first create an instance of the Interop's "ApplicationClass", then create a related Workbook or Document respectively.  Reading what information is out there on the net, this seems like a valid approach, but I'm getting a COM error.

    Here's my code, edited a bit for brevity:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using msp = Microsoft.Office.Interop.MSProject;
    using System.Runtime.InteropServices;
    
    namespace ProjectMangle
    {
      public partial class MainForm : Form
      {
        private msp.ApplicationClass p_app;
    
        public MainForm()
        {
          InitializeComponent();
        }
    
        public void Finalize()
        {
          if (p_app != null)
          {
            p_app.Quit();
            Marshal.ReleaseComObject(e_app);
          }
        }
    
        #region UI Handlers
        private void btFileLoad_Click(object sender, EventArgs e)
        {
          doLoadFile();
        }
    
        private void btQuit_Click(object sender, EventArgs e)
        {
          doClose();
        }
        #endregion
    
        private void doClose()
        {
          // close
          this.Close();
        }
    
        private void doLoadFile()
        {
          try
          {
            p_app = new msp.ApplicationClass();
          }
          
          catch (COMException ex)
          {
            Console.WriteLine(ex.Message);
          } 
        }
      }
    }
    
    Running this code gets me the following error:

    Creating an instance of the COM component with CLSID {36D27C48-A1E8-11D3-BA55-00C04F72F325} from the IClassFactory failed due to the 
    following error: 80010001.

     

    If anyone could throw some light on whats causing this I'd me most grateful - I have tried most of solutions I have found out on the net - all of those that seem to have a similar situation - with no joy.

    If you need any more info, please ask.  If I've posted this to the wrong place, please advise as to the more appropriate location and I will move the discussion there.

    Thank you for your time.

    David Falconer.