2013-08-22 63 views
1

试图到Outlook自动化作为展望互操作异常

Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.ApplicationClass();  
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI"); 

并获得以下异常在第二线即GetNamespace

Unable to cast COM object of type 'Microsoft.Office.Interop.Outlook.ApplicationClass' to interface type 'Microsoft.Office.Interop.Outlook._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00063001-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

我使用.Net Framework 4Outlook 2013

this唯一的解决方案!因为我正试图避免对注册表进行任何更改。

编辑

this没有解决问题。

编辑 如果引用的库是Office 15并且安装的库是10或12,它会工作吗?

+0

试图http://stackoverflow.com/questions/4656360/unable-to-cast-com-object-microsoft-outlook-c-sharp?rq=1 – bjan

回答

0

你试过这个吗?

Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.Application(); 
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI"); 
+0

是,同样的错误 – bjan

1

异常看起来很明显,这应该工作

var myApp = new Microsoft.Office.Interop.Outlook.Application(); 

,你就不能得到与上面那行铸造例外。

+0

获取名称空间,例如'myApp.GetNamespace'时抛出异常。但是,我试过这个,并再次抛出异常'var myApp = new Microsoft.Office.Interop.Outlook.Application(); var mapiNameSpace = myApp.GetNamespace(“MAPI”);' – bjan

1

当您安装了两个版本的Office并卸载它时,通常会发生此异常。为仍然安装的Office运行修复安装,这应该修复注册表项。

-1
//DECLARE 
    Microsoft.Office.Interop.Outlook.Application app = null; 
    Microsoft.Office.Interop.Outlook.NameSpace ns = null; 

    //INITIALISE 
    app = new Microsoft.Office.Interop.Outlook.Application(); 
    ns = app.Session; 
+0

毫无疑问。我提供了什么可能是解决问题的方法:) – TheDanMan

0

对于我来说,9.5版本的修复程序并不适用,因为没有过多的9.5字段。

在我的情况下,问题是当我降级到Outlook 2010时,我修改了安装位置(即不在默认的ProgramFiles文件夹中)。 但是,Windows并未相应更新'HKEY_CLASSES_ROOT \ TypeLib {00062FFF-0000-0000-C000-000000000046} \ 9.4 \ 0 \ win64'中的值。

手动更新该值并将其指向正确的位置后,问题就解决了。

0

我遇到了同样的错误消息,我的问题是我安装了Office 2016 x64,而试图调用它的应用程序编译为x86。切换到x86 Office 2016解决了我的问题。

0

我被这个问题困住了好几天。这对我有效:

我刚刚意识到,Outlook 2013是64位...而我的C#应用​​程序已在项目属性 - “生成”任何CPU“作为平台目标和一个复选标记”首选32位”。

我将平台目标更改为x64,它工作!

-1

给我删除9。从这个注册表项5作品:

HKEY_CLASSES_ROOT\TypeLib\{00062FFF-0000-0000-C000-000000000046}