visual studio office microsoft c# com outlook office-interop com-interop

c# - microsoft.office.interop.excel visual studio 2015



Excepción de Interoperación de Outlook (8)

Me encontré con exactamente el mismo mensaje de error que tiene, mi problema era que había instalado Office 2016 x64 mientras que la aplicación que intentaba llamar se compiló como x86. El cambio a x86 Office 2016 resolvió el problema por mí.

Intentando automatizar Outlook como

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

y obtener la siguiente excepción en la segunda línea, es decir, GetNamespace

No se puede convertir el objeto COM del tipo ''Microsoft.Office.Interop.Outlook.ApplicationClass'' al tipo de interfaz ''Microsoft.Office.Interop.Outlook._Application''. Esta operación falló porque la llamada QueryInterface en el componente COM para la interfaz con IID ''{00063001-0000-0000-C000-000000000046}'' falló debido al siguiente error: No se admitió dicha interfaz (Excepción de HRESULT: 0x80004002 (E_NOINTERFACE)) .

Estoy usando .Net Framework 4 y Outlook 2013 .

¿Es esta la única solución? ya que estoy tratando de evitar hacer cambios en el registro.

Editar

esto no solucionó el problema.

Editar Si la biblioteca a la que se hace referencia es Office 15 y la biblioteca instalada es 10 o 12, ¿funcionaría?


Para mí, eliminar 9.5 entradas de este registro funciona:

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


¿Has probado esto?

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


La excepción parece bastante obvia, esto debería funcionar

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

simplemente no puede obtener una excepción de lanzamiento con esa línea de arriba.


Esta excepción generalmente ocurre cuando tenía dos versiones de Office instaladas y luego desinstaló una. Ejecute una instalación de reparación para su Office aún instalada, esto debería corregir las claves de registro.


//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;


La solución de la versión 9.5 no me funcionaba, ya que no había un campo 9.5 excesivo.

En mi caso, el problema fue que cuando me degradaron a Outlook 2010 modifiqué la ubicación de instalación (es decir, no en la carpeta predeterminada Archivos de programa). Sin embargo, Windows no actualizó en consecuencia el valor en ''HKEY_CLASSES_ROOT / TypeLib {00062FFF-0000-0000-C000-000000000046} / 9.4 / 0 / win64''.

Después de actualizar manualmente el valor y señalarlo a la ubicación correcta, se resolvió el problema.


Me he quedado perplejo por este problema por días. Esto funcionó para mí:

Me acabo de dar cuenta de que Outlook 2013 es de 64 bits ... Y mi aplicación C # tenía en Project Properties -> Build "Any CPU" como objetivo de plataforma y una marca de verificación en "Prefer 32-bit".

Cambié el objetivo de la plataforma a x64 y ¡funcionó!