2009-02-05 20 views
1

我有一个用c#编写的自动化加载项,它公开了一些用作Excel中公式的函数。如何在Excel的公式自动完成中显示.net自动化加载项功能

可以从Excel工作表成功使用这些公式,但它们不会出现在Excel2007的公式自动完成列表中。

即如果我想在Excel表格中使用函数AddNums(x,y),那么我必须知道函数被调用了什么,或者我可以在函数向导中找到函数。能够开始输入Add ..然后查看以Add开头的公式将会很好。

在Excel中是否支持自动化加载项? (我知道它是用于xlls)。

回答

1

这从Microsoft support

自动化加载项和每个自动化外接在Excel的函数向导自己的类函数向导 。类别名称是加载项的ProgID;您无法为自动化加载项功能指定不同的类别名称。此外,无法在函数向导中指定函数描述,参数描述或对自动化加载项函数的帮助。

本文还提到其他插件类型优先于公式列表。

我的首选方法是编写一个VBA插件,它包含了您在当前插件中公开的功能。我这样做,通过实现一个COM DLL我的代码(支持IDTExtensibility2的,因此加载作为一个COM插件),然后通过非常薄VBA包装访问该对象的其他方法:

Public Function AddinInMethod (param As String) As Variant 
    Dim oAdd As Object 
    On Error GoTo Err 
    Set oAdd = Application.COMAddIns.item("MyProgID").Object 
    AddInMethod = oAdd.AddInMethod(param) 
    Exit Function 
Err: 
    AddinMethod = "#" & Err.Description 
End Function 

这很适合我因为我的所有代码都是C++。

由于您正在编写C#代码,因此您可能会更好地将您的插件作为C#VSTO加载项实现。我个人并没有这样做,但它看起来有许多很好的框架功能,您可以利用这种Addin(尽管您仅限于较新版本的Office)。

0

我想即使在Excel 2007中,函数也会列出。这是我总是用我的UDF看到的。这里是一个例子,你可能想尝试一下。我知道它确实在我的电脑上有效。

http://book.greenwich2greenwich.com/Examples/