3

J'utilise Visual Studio 2010 pour créer un complément Outlook 2010. J'essaye de créer un nouvel Outlook AppointmentItem pour fonctionner en pensant que je peux l'ajouter finalement au calendrier.80040154 Classe non enregistrée ERROR dans Outlook 2010 Add In

Microsoft.Office.Interop.Outlook.AppointmentItem tempApp = new Microsoft.Office.Interop.Outlook.AppointmentItem(); 

Mais quand le AddIn court et essaye de créer l'objet AppointmentItem, je reçois cette erreur sur la ligne ci-dessus.

System.Runtime.InteropServices.COMException was unhandled by user code 
     Message=Retrieving the COM class factory for component with CLSID {00061030-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). 
     Source=mscorlib 
     ErrorCode=-2147221164 

Que puis-je faire pour "enregistrer la classe"? Je suppose que cela a à voir avec Microsoft.Office.Interop.Outlook.dll en quelque sorte.

+0

essayez d'installer/réinstaller outlook, d'après ce que j'ai lu sur d'autres forums cela pourrait faire l'affaire –

Répondre

2

Le message d'exception est pas très utile, ils auraient pu faire un meilleur travail avec la déclaration COM. C'est par conception, la classe n'est pas enregistrée. Vous devez créer une instance avec la méthode Application.CreateItem().

+0

Plus précisément, voici à quoi ressemble le code maintenant: - Globals. ThisAddIn.Application.CreateItem (Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem) ' – kavun

3

Outlook 2010 est-il installé? L'assembly interop est juste un wrapper .NET pour le composant COM d'Outlook 2010. Ce composant doit être enregistré pour interop pour fonctionner. Cet enregistrement est généralement effectué par l'application possédant le composant, c'est-à-dire Outlook dans ce cas.

Vous pouvez essayer d'enregistrer le composant par l'utilitaire regsvr32, mais vous devez connaître le nom de la DLL contenant le composant.

Utilisez OleView (désormais appelé "OLE-COM object viewer") dans "Menu Démarrer \ Programmes \ MS Visual Studio xxxx \ Outils Microsoft SDK Windows" pour voir les composants enregistrés.

Et vérifiez l'option x86/x64. Par exemple. vous pouvez avoir une version 32 bits de ce composant enregistré et une application 64 bits ou vice versa.

http://www.msoutlook.info/question/461

+0

- J'ai Outlook 2010 installé, mais c'est une version 32 bits, et je crois que mon AddIn est 64 bits depuis que je Je développe sur un système 64 bits. - J'ai regardé dans OLE/COM Object Viewer et la bibliothèque d'objets TypeLib Registry pour Microsoft Outlook 14.0 (Ver 9.4) a un GUID différent de ce qui était montré dans l'erreur - {000062FFF-0000-0000-C000-0000000000} vs dans le Erreur {00061030-0000-0000-C000-000000000046} – kavun

+1

Essayez de chercher http://msdn.microsoft.com/fr-fr/library/gg549122.aspx –

1

Voici ce que je fais normalement pour tous les objets d'Outlook Interop j'ai besoin:

// In Global Properties 
    public static Outlook.Application olook = new Outlook.Application();  // Outlook Application Object. 

    // In Method 
    Outlook.AppointmentItem olookAppointment = (Outlook.AppointmentItem)olook.CreateItem(Outlook.OlItemType.olAppointmentItem); 

Il est similaire à la solution ci-dessus.

Questions connexes