2009-09-24 12 views
13

Tenemos un complemento de aplicación VSTO (no un complemento de documento) para Excel, y queremos exponer un evento al código VBA para que la macro VBA pueda hacer algo acción cuando este evento se activa en el complemento. ¿Cómo puedo obtener el código VBA para poder suscribirme a un evento definido en el complemento de aplicación VSTO?Acceder a tipos de complemento de aplicación VSTO de VBA (Excel)

Creo que dado que el complemento se carga en el proceso de Excel, esto no debería ser demasiado complicado, pero aún no ha encontrado una manera.

Por cierto, utilizando VS 2008 y Excel 2007.

Gracias!

Respuesta

10

VSTO no es una DLL que generalmente se puede llamar desde otras DLL. VSTO es básicamente código .NET expuesto a COM que opera desde un contenedor que opera desde un dominio de aplicación separado. Aunque su complemento VSTO es técnicamente una DLL que se está cargando en Excel, funciona más como un EXE de nivel superior que como una biblioteca DLL expuesta a otras llamadas.

Personalmente, crearía un ensamblado .NET estándar, es decir, evitaré el uso de VSTO para esto, y lo expondría a COM utilizando los atributos correctos. El proceso está bien explicado aquí: COM Interop Exposed - Part 2, en la sección titulada "Exponer eventos .NET a COM".

Si realmente insisten sobre la activación de VBA para poder llamar a VSTO, entonces vas a tener que operar a través de la propiedad Office.COMAddIn.Object que está habilitado reemplazando el método RequestComAddInAutomationService. El proceso se analiza en detalle en el artículo VSTO Add-ins, COMAddIns and RequestComAddInAutomationService de Andrew Whitechapel.

Espero que esto ayude!

Mike

+0

Terminé usando RequestComAddInAutomationService. Gracias. –

+0

Genial, buen trabajo. Gustoso de trabajar para ti. :-) –

+2

+1 buena pregunta, gran respuesta! – Ahmad

Cuestiones relacionadas