如何让 Excel 加载项 (Excel 2007) 中的用户定义函数与自动完成功能一起使用?

Posted

技术标签:

【中文标题】如何让 Excel 加载项 (Excel 2007) 中的用户定义函数与自动完成功能一起使用?【英文标题】:How to get User Defined Functions in Excel Add-Ins (Excel 2007) to work with AutoComplete? 【发布时间】:2010-11-09 18:28:24 【问题描述】:

我创建了一个加载项,当我在表达式框中使用它时,自动完成功能不起作用。当我单击用户定义函数下的函数“f”按钮时,我确实看到了它们。我只想让 AutoComplete 与他们一起工作,这样我就不必记住他们的名字,也不必每次都单击功能“f”按钮。

【问题讨论】:

【参考方案1】:

虽然这是一个旧线程,但似乎没有什么解决方案。我在最初由 Laurent Longre 发现的 JKP 应用程序开发服务中找到了一个示例。一个警告解释如下:

这种技巧方法的缺点是,实际上是在自己使用的 dll 中重新注册一个函数,任何程序都可能使用该函数

http://www.jkp-ads.com/Articles/RegisterUDF01.asp

此解决方案仅注册/取消注册 UDF,但用户仍需将工作簿另存为 .xlam 并安装插件。我使用以下代码将当前工作簿自动安装为 Excel 插件(如果要更新插件,则需要添加一些错误捕获以确定插件是否已安装)。

'Saves current workbook as an .xlam file
sFile = Application.LibraryPath & "\" & "name_of_addin" & ".xlam"
ThisWorkbook.SaveAs sFile, 55
ThisWorkbook.IsAddin = True
'Adds temporary workbook
Workbooks.Add
'Installs the addin
Set oAddin = AddIns.Add(sFile , False)
oAddin.Installed = True
'Closes temporary workbook
Workbooks(Workbooks.Count).Close
MsgBox ("Installation Successful.  Please close Excel and restart.")
'Closes workbook without saving
Workbooks(sFirstFile).Close False

【讨论】:

【参考方案2】:

AFAIK 目前的 Excel 版本(包括 Excel 2010)无法(不幸地)使 UDF 使用自动完成功能。有一些方法可以为函数向导添加参数描述和帮助。

【讨论】:

我认为您已经确认了我在网上找到的内容。 blogs.msdn.com/b/excel/archive/2005/10/19/482826.aspx -- 此链接表示 UDF 可以显示在公式自动完成中。顺便说一句,关于“有办法为函数向导添加参数描述和帮助”的任何细节 - 对于基于 COM 的自动化插件?我们需要向类型库添加信息吗?

以上是关于如何让 Excel 加载项 (Excel 2007) 中的用户定义函数与自动完成功能一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

Excel 2007 VSTO 加载项即使在成功安装后也不可见

Excel 2007 宏按钮灰显

Excel 加载项在类库之间共享内存

如何在 Excel VSTO 加载项中为 OnUndo 调用 C# 方法?

excel2007以后的文件格式

Excel 2007 宏移动重复项