Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Referencing a com addin from a .net application via ole automation
Hi
I'm developing a c# application integrated with excel via ole automation. I've developed an excel commandbar and handle buttons' click events. So far, so good. I got stuck with accessing my com addin from the .net application. I couldn't find any official documentation, so following a vb example that I found on the web, I'm passing the addin instance: class Connect : Object, Excensibility.IDTExcensibility2 { .... public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom) { addInInst.GetType().InvokeMember("Object", BindingFlags.Public | BindingFlags.SetProperty, null, addInInst, new object [] {this}); } .... } According to the example I should be able to the addin from my application: foreach(Office.ComAddIn comAddin in xlApp.COMAddIns) { if (comAddIn.ProgId.Equals("ComAddin.Connect")) { ComAddin.Connect com = (ComAddin.Connect) comAddIn.GetType().InvokeMember("Object", BindingFlags.Public | BindingFlags.GetProperty, null, comAddIn, null); } } However I get an exception saying that the 'Specified cast is not valid'. Is there some other way to access my com addin? Cheers, Luke |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Referencing a com addin from a .net application via ole automation
Luke,
you have a .NET c# app that launces/connects to Excel through (OLE) Automation, and now want to launch a comm addin as well through the ..NET app? The Excel.Applicatiob object has COmmaddins collection: VB example: Dim MyXLApp as Excel.Application '.... connect to XL instance 'activates Registered COM addin: MyXLApp.Commaddins("MyComProgID").Connect = True Dm unseen |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Referencing a com addin from a .net application via ole automa
Hi
"DM Unseen" wrote: you have a .NET c# app that launces/connects to Excel through (OLE) Automation, and now want to launch a comm addin as well through the ..NET app? No, my addin is loaded when excel starts. What I'm trying to do is to cast a COMAddIn object retrieved from Excel.Application.COMAddIns collection to my add-in type for further use. As an example, here's the code from my .net app: object myComAddIn = comAddIn.GetType().InvokeMember("Object", BindingFlags.Public | BindingFlags.GetProperty, null, comAddIn, null); myComAddIn.GetType().InvokeMember("Test", BindingFlags.Public | BindingFlags.InvokeMethod, null, myComAddIn, null); The above code successfully invokes the Test() method of my COM AddIn. What I'm trying to do next is to cast myComAddIn to my com add-in type, which fails. The reason is to be able to subscribe to add-in's custom events. Any ideas? Luke |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
Referencing a com addin from a .net application via ole automa
Got it,
No, i'm not sure if that is possible. I'f i might hazzard a guess: You first need to register the typelib of the COM addin and and then create an interop assembly for .NET and reference this in your .NET project. Else your project does not know which events are sourced by the COMM addin. Then create a variable of your top level object with events (I do not know the .NET equivalent) and assign the CoMaddin Object property to it. DM Unseen |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
UDF's via Automation Addin in Excel 2010? | Excel Worksheet Functions | |||
addIn functions in automation | Excel Programming | |||
May be Automation AddIn loading problem!! | Excel Programming | |||
Automation COM Addin with Excel | Excel Programming | |||
application is not getting closed through automation | Excel Programming |