View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
Andrew Andrew is offline
external usenet poster
 
Posts: 358
Default Excel v10 can't find function in C# .Net managed Automation add-in

OK I found the answer myself. Microsoft have a patch solution posted back in
december that works for Office XP, but has not been included in the office xp
update.
http://support.microsoft.com/kb/908002/en-us

I think the latest updates to office 2003 include it already so it is only
needed for office XP only users using .net framework 2.0 add-ins.

Well it works for me anyway...what a pity clickonce deploy packages
pre-requisite as a setup.exe and .msi which i don;t allow to download from my
site (which was the whole point of choosing the .deploy/manifest solution
check box in the click once options anyway..GO FIGURE.)
Jeltz




"Andrew" wrote:

When deploying a managed automation add-in to another machine (local file
system install and registration of add-in), Excel v10 (aka XP) will find the
registerd add-in (tools-addins-automation) but the function will not appear
in the function list and of course #NAME? results if try to use in the
spreadhseet.

The add-in works fine on machines with office v11 installed, and also works
fine for Excel v10 on a machine with both office 2003, Office XP and vs2005
installed. (The function name appears in Insert Function list as expected).

Even a simplified test program (no interfaces other than autodual) has this
problem
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using Microsoft.Win32;
namespace testfunc1
{
[ClassInterface(ClassInterfaceType.AutoDual)]
public class functions
{
public Double AJTE(Double a,Double b)
{
return (a+b);
}
[ComRegisterFunctionAttribute]
public static void RegisterFunction(System.Type t)
{
Microsoft.Win32.Registry.ClassesRoot.CreateSubKey
("CLSID\\{" + t.GUID.ToString().ToUpper() +
"}\\Programmable");
}

[ComUnregisterFunctionAttribute]
public static void UnregisterFunction(System.Type t)
{
Registry.ClassesRoot.DeleteSubKey
("CLSID\\{" + t.GUID.ToString().ToUpper() +
"}\\Programmable");
}
}
}

I am using win xp pro, vs2005, .Net Framework 2.x and all updates to all
products in place.

And here I was thinking I was ready to let it loose on clients....Any
thoughts on what is going on?

Jeltz.