gpt4 book ai didi

c# - 寻求 Excel 自定义函数工具提示

转载 作者:IT王子 更新时间:2023-10-29 03:36:00 27 4
gpt4 key购买 nike

这个问题已经asked before , 但每次接受的答案只是辞职,使用 Application.MacroOptions ( VBA6 ) ( VBA7 ) 提供功能描述,但此信息实际上并未显示为工具提示,因此它没有解决我的问题。

目标

我们都希望能够通过任何方式(VBA、VSTO 或 COM 加载项)定义自定义函数,并让用户受益于函数及其相关信息的弹出/工具提示描述参数,如每个内置 Excel 函数所显示的那样,无论是内联还是在公式栏中:

enter image description here

enter image description here

对此需求的广泛接受的答案是自定义功能是不可能的,但我想挑战这种信念。

问题

目前,我见过的最好的做法是定义函数(通常使用上面的 MacroOptions 调用),以便在调出函数对话框(公式栏中的 fx 按钮)时,它们的函数和参数说明如下所示:

enter image description here

如您所见,这是一个具有许多参数的复杂函数。如果用户不知道这个“函数参数”对话框以及如何调出它,而是只熟悉 Excel 的标准工具提示,他们将只能看到公式名称而没有其他帮助:

enter image description here

他们没有机会正确提供所需的参数。 (没有阅读文档,当然,没有用户会这样做。)

现在,高级用户可能知道通过键入 Ctrl+Shift+A,他们将获得一个自动完成的列表像这样的函数参数:

enter image description here

但是,当然,我们遇到了与上述相同的问题,即标准 excel 用户只会习惯第一张图片的默认行为,并且可能永远不会了解该功能。

此时应该清楚为什么这还不够,我们想要每个内置函数都有的东西 - 告诉用户如何使用该函数的内嵌工具提示。

挑逗

起初,我可能确信这根本不可能,除非使用 native Excel 应用程序功能。加载项和 VBA 是可扩展功能,此工具提示可能根本无法扩展。但该理论受到 Analysis Toolpak 加载项的挑战。当然,它是在 Microsoft 中构建的,但 ANALYS32.xll 是一个独立的 XLL 插件,就像那些可以在 VB、C、C++ 和 C# 中生成的插件一样。果然,当这个 XLL 被加载到应用程序中时 functions它提供了与 native excel 函数相同的工具提示:

enter image description here

当然,如果此信息以某种方式编码在此 XLL 文件中并传递到 Excel,是否有办法使用我们自己的加载项复制它?我现在正要开始自学一些反编译知识,看看我是否可以对分析工具包中发生的任何事情进行逆向工程。

您可以如何提供帮助

我几乎可以肯定,我已经研究了有关此问题的所有公开信息。如果有人知道一些我不知道的事情可能对此有帮助,请随时插话。我对逆向工程编译的 dll/xll 非常不熟悉,所以如果有人想打开他们的本地副本 Analysis32.xll 和弄清楚它的自定义函数定义是怎么回事,我将非常有义务。否则,我将自己继续深入研究,直到遇到所有死胡同并报告我的发现。

最佳答案

我已将概念验证项目发布到 GitHub,编号为 Excel-DNA IntelliSense项目,实现这个。

使用 UI 自动化类来监视适当的 Excel 用户界面事件,在适当的时候显示一个表单。

代码被包装为 Excel-DNA加载项,并在我的 Excel 2013/Windows 8 机器上工作。我已经在另一种配置(Windows Server 2008 上的 64 位 Excel 2010)上进行了测试,但遇到了严重的问题。

对于使用 Excel-DNA 属性定义的 C# 函数,如下所示:

[ExcelFunction(Description = 
"A useful test function that adds two numbers, and returns the sum.")]
public static double AddThem(
[ExcelArgument(Name = "Augend",
Description = "is the first number, to which will be added")]
double v1,
[ExcelArgument(Name = "Addend",
Description = "is the second number that will be added")]
double v2)
{
return v1 + v2;
}

我们得到了两个函数的描述

Function Description

在选择函数时,我们会得到参数帮助

Argument Help

这看起来不错,但仍然非常不稳定,只能在我的机器上运行,有时会使 Excel 崩溃。不过,这可能是一个开始......


2014 年 5 月 9 日更新:

我在弄清楚如何使参数帮助在较旧的 Excel 和 Windows 版本下工作方面取得了一些进展。但是,要使一切可靠,仍然需要大量工作。任何愿意为此提供帮助的人请直接与我联系。


2016 年 6 月 18 日更新:

Excel UDF IntelliSense 对 Excel-DNA 加载项和 VBA 函数的支持现在正在测试中。查看Getting Started GitHub 上的页面以获取说明。

关于c# - 寻求 Excel 自定义函数工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16903587/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com