1

我有一个用 c# 编写的自动化插件,它公开了一些要在 Excel 中用作公式的函数。

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

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

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

4

2 回答 2

1

这来自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)。

于 2009-03-05T01:12:53.407 回答
0

我认为即使在 Excel 2007 中,也会列出这些功能。这就是我在使用我的 UDF 时经常看到的。这是一个示例,您可能想尝试一下。我确定它可以在我的电脑上运行。

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

于 2009-07-18T11:39:23.883 回答