我创建了以下自动化插件:
namespace AutomationAddin
{
[Guid("6652EC43-B48C-428a-A32A-5F2E89B9F305")]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public class MyFunctions
{
public MyFunctions()
{
}
#region UDFs
public string ToUpperCase(string input)
{
return input.ToUpper();
}
#endregion
[ComRegisterFunctionAttribute]
public static void RegisterFunction(Type type)
{
Registry.ClassesRoot.CreateSubKey(
GetSubKeyName(type, "Programmable"));
RegistryKey key = Registry.ClassesRoot.OpenSubKey(
GetSubKeyName(type, "InprocServer32"), true);
key.SetValue("",
System.Environment.SystemDirectory + @"\mscoree.dll",
RegistryValueKind.String);
}
[ComUnregisterFunctionAttribute]
public static void UnregisterFunction(Type type)
{
Registry.ClassesRoot.DeleteSubKey(
GetSubKeyName(type, "Programmable"), false);
}
private static string GetSubKeyName(Type type,
string subKeyName)
{
System.Text.StringBuilder s =
new System.Text.StringBuilder();
s.Append(@"CLSID\{");
s.Append(type.GUID.ToString().ToUpper());
s.Append(@"}\");
s.Append(subKeyName);
return s.ToString();
}
}
}
我构建它并注册就好了。我打开excel 2003,转到工具 - >加载项,单击自动化按钮,列表中会出现插件。我添加它,它显示在插件列表中。但是,功能本身并没有出现。如果我输入它不起作用,如果我查看功能向导,我的插件不会显示为类别,并且功能不在列表中。
我在Windows 7 x86上使用excel 2003。我使用visual studio 2010构建了这个项目。这个插件在使用visual studio 2008构建的windows xp上运行良好。
答案 0 :(得分:0)
结果证明CLR无法正常工作,安装了补丁,现在可以正常工作。