我有一个用 c# 编写的自动化插件,它公开了一些要在 Excel 中用作公式的函数。
这些公式可以在 Excel 工作表中成功使用,但它们不会出现在 Excel2007 的公式自动完成列表中。
即,如果我想在 Excel 工作表中使用函数 AddNums(x,y),那么我必须知道该函数被称为什么,或者我可以在函数向导中找到该函数。能够开始输入 Add.. 然后看到以 Add 开头的公式会很好。
Excel 是否支持自动化加载项?(我知道它适用于 xlls)。
我有一个用 c# 编写的自动化插件,它公开了一些要在 Excel 中用作公式的函数。
这些公式可以在 Excel 工作表中成功使用,但它们不会出现在 Excel2007 的公式自动完成列表中。
即,如果我想在 Excel 工作表中使用函数 AddNums(x,y),那么我必须知道该函数被称为什么,或者我可以在函数向导中找到该函数。能够开始输入 Add.. 然后看到以 Add 开头的公式会很好。
Excel 是否支持自动化加载项?(我知道它适用于 xlls)。
这来自Microsoft 支持:
自动化插件和函数向导 每个自动化插件在 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 插件。我没有亲自做过,但看起来有很多不错的框架功能可以作为这种类型的插件加以利用(尽管您仅限于较新版本的 Office)。
我认为即使在 Excel 2007 中,也会列出这些功能。这就是我在使用我的 UDF 时经常看到的。这是一个示例,您可能想尝试一下。我确定它可以在我的电脑上运行。