Retrieving Current Excel Instance from Automation Add-IN

M

mduncan

I have created an Automation Addin with the following code.

[ClassInterface(ClassInterfaceType.AutoDual)]
public class TestFunctions
{
private ApplicationClass excelApplication;

public TestFunctions()
{
// this.excelApplication = SOMETHING
}

[ComRegisterFunctionAttribute]
public static void RegisterFunction(Type type)
{
Registry.ClassesRoot.CreateSubKey(GetSubKeyName(type));
}

[ComUnregisterFunctionAttribute]
public static void UnregisterFunction(Type type)
{
Registry.ClassesRoot.DeleteSubKey(GetSubKeyName(type),false);
}

private static string GetSubKeyName(Type type)
{
string s = @"CLSID\{" + type.GUID.ToString().ToUpper() + @"}\Programmable";
return s;
}

Using the code above I want to grab the instance of Excel THAT THE ADD_IN is
RUNNING in. I tried this.excelAppication = new ApplicationClass(), but that
just creates a new excel instance.

Any suggestions would be very helpful.

Thank you,

mduncan
 
S

Simon Murphy

If its a vs office addin project:
the boiler plate code should include an
object called applicationObject, you should be able to reference that (its
private within the connect class so you'll have to make it public/global or
put an accessor routine in)
applicationObject is set on connection

if its a vs office project:
The boiler plate code should include an
Excel.Application called ThisApplication, you should be able to reference
that directly?
(I'm using VS.net 2003)

cheers
simon
 
M

mduncan

Thank you. The on connection solution works perfectly!

Simon Murphy said:
If its a vs office addin project:
the boiler plate code should include an
object called applicationObject, you should be able to reference that (its
private within the connect class so you'll have to make it public/global or
put an accessor routine in)
applicationObject is set on connection

if its a vs office project:
The boiler plate code should include an
Excel.Application called ThisApplication, you should be able to reference
that directly?
(I'm using VS.net 2003)

cheers
simon

mduncan said:
I have created an Automation Addin with the following code.

[ClassInterface(ClassInterfaceType.AutoDual)]
public class TestFunctions
{
private ApplicationClass excelApplication;

public TestFunctions()
{
// this.excelApplication = SOMETHING
}

[ComRegisterFunctionAttribute]
public static void RegisterFunction(Type type)
{
Registry.ClassesRoot.CreateSubKey(GetSubKeyName(type));
}

[ComUnregisterFunctionAttribute]
public static void UnregisterFunction(Type type)
{
Registry.ClassesRoot.DeleteSubKey(GetSubKeyName(type),false);
}

private static string GetSubKeyName(Type type)
{
string s = @"CLSID\{" + type.GUID.ToString().ToUpper() + @"}\Programmable";
return s;
}

Using the code above I want to grab the instance of Excel THAT THE ADD_IN is
RUNNING in. I tried this.excelAppication = new ApplicationClass(), but that
just creates a new excel instance.

Any suggestions would be very helpful.

Thank you,

mduncan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top