View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
Luke Luke is offline
external usenet poster
 
Posts: 142
Default 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