问题标签 [excel-udf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
16094 浏览

excel - Excel 2007 UDF:如何添加函数描述、参数帮助?

说明

我正在 COM 服务器中编写几个 Excel UDF。我想获得按fx时获得的标准帮助(插入函数对话框) 。是的,我可以在“类别”下拉列表中看到我的 COM 服务器,但是

  • 我还看到了 Equals、GetHashCode、GetType 和 ToString(它们对于 Excel 用户来说是相当不希望的),
  • 选择我的 COM 服务器会弹出 *Function Arguments*[1] 对话框,其中没有参数信息和函数描述。

这是我得到的跛足:

插入函数对话框 http://www.iwebthereforeiam.com/files/Insert%20function%20dialog.gif

Excel 函数参数对话框 http://www.iwebthereforeiam.com/files/Function%20Arguments%20dialog.gif

问题

是否有 .NET 属性可以放在将其传递给 Excel 的方法上?

  • 我可以提供功能的描述吗?
  • 我可以提供参数的描述吗?
  • 我可以为我的函数提供一个类别名称,以便获得比 ProgID 更好的东西吗?

(我发现它在 ExcelDNA 中看起来很容易做到,但我不会走那条路。模拟 govert 的代码 [自定义属性、某种加载器等] 看起来会很困难。)


附加背景

如果您之前没有使用过 Excel + COM 服务器,这里有一些有用的资源可以帮助您快速上手:

以前的 StackOverflow 问题:
如何在自动化服务器列表中安装并注册用 VB.NET 编写的 COM Server for Excel?
如何将 COM 公开的 .NET 项目添加到 VB6(或 VBA)引用对话框?

其他资源:
在 .NET 中为 Excel 编写用户定义的函数
构建和部署 .NET COM 程序集
在 C# 中编写自定义 Excel 工作表函数


编辑 2009-10-20 14:10

我尝试调用Application.MacroOptions一个Sub New().

  1. 否 Sub New()
    半可接受:函数列在 ProgID 类别下。
  2. Shared Sub New()
    不可接受:构建时错误。
    /blockquote>
  3. Sub New()
    不可接受:类别未在“插入函数”对话框中列出。

我怀疑这对于 MacroOptions 和 Charles 推荐的更复杂的路线都是一个问题。


编辑 2009-10-20 14:55

从好的方面来说,Mike 建议创建一个接口来实现确实消除了暴露出来的烦人的额外方法。


编辑 2009-10-20 15:00

这篇 2007 年初的 Microsoft 文章(通过Mike 的链接)似乎是关于该主题的一个相当完整的答案:

自动化插件和函数向导

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


1嗯,一个 StackOverFlow 错误。看起来您不能将显式 HTML ul-list 中的字符串斜体化?

0 投票
1 回答
394 浏览

excel - Excel 自动化插件 UDF 无法访问

我创建了以下自动化插件:

我构建它并且它注册得很好。我打开excel 2003,转到工具->插件,单击自动化按钮,插件出现在列表中。我添加它,它显示在插件列表中。但是,功能本身并没有出现。如果我输入它不起作用并且如果我查看函数向导,我的插件不会显示为类别并且函数不在列表中。

我在 Windows 7 x86 上使用 excel 2003。我用visual studio 2010构建了这个项目。这个插件在用visual studio 2008构建的windows xp上运行良好。

0 投票
3 回答
18285 浏览

c# - 如何使用 RtdServer 在 C# 中创建实时 Excel 自动化加载项?

我的任务是使用 RtdServer 在 C# 中编写一个实时 Excel 自动化插件来工作。我非常依赖在 Stack Overflow 中学到的知识。我决定通过写一个如何将我所学的知识联系在一起的文档来表达我的谢意。Kenny Kerr 的Excel RTD 服务器:最小的 C# 实现文章帮助我入门。我发现Mike RosenblumGovert的评论特别有帮助。

0 投票
1 回答
2470 浏览

c# - 如何在 C# 中创建一个包装 RTD 函数的 Excel 自动化加载项?

我有一个有效的基于 RtdServer 的自动化加载项:
如何使用 RtdServer 在 C# 中创建实时 Excel 自动化加载项?.

创建 VBA 包装器很简单:

这行得通。我试图创建一个 C# 包装器,如下所示:

当我在 Excel 中的单元格中输入“=Countdown(150)”时,它会显示 ConnectData 返回的初始值 150,但从不更新。我应该注册一些回调吗?我是否正确实例化了 Application 对象?我错过了什么?

谢谢,

坦率

0 投票
3 回答
12697 浏览

excel - “Microsoft Office Excel 正在等待另一个应用程序完成 OLE 操作”是什么意思。意思是?

我有一个可用的 RTD Excel 自动化插件,类似于此处描述的插件。间歇性地,在尝试加载包含此公式的工作表时,我收到以下错误:

Microsoft Office Excel 正在等待另一个应用程序完成 OLE 操作。

根据一些论坛讨论(我无法再找到),我已选中并取消选中“忽略使用动态数据交换 (DDE) 的其他应用程序”。两者都不起作用。

谷歌为此错误产生了许多点击,但没有解决方案。这里有一篇古老的知识库文章,但同样没有解决方案。

是什么导致了这个错误?有什么办法可以避免吗?

谢谢!

0 投票
1 回答
994 浏览

c# - Excel Automation Addin 函数返回 excel 范围

我正在使用 c# 编写一个 Excel 2003 自动化插件。

我已经关注了这篇文章http://blogs.msdn.com/b/eric_carter/archive/2004/12/01/writing-user-defined-functions-for-excel-in-net.aspx

每件事都有效,包括将 excel 范围对象作为参数传递。但我无法从我的函数中返回范围对象。我对主题的了解非常有限,将不胜感激任何投入。

0 投票
1 回答
696 浏览

excel - 无论计算模式如何,您将如何编写手动计算的 excel udf?

我目前有一个使用表单的宏,以便在外部程序的帮助下执行一些计算。它所做的只是将一些工作表值写入文件以供另一个程序(外部 .exe)使用作为输入(该程序是封闭源代码)。所述程序然后编写自定义格式输出,我用 VBA 将其废弃,然后将返回值传递回工作表。通过指定源和目标范围的用户表单调用宏。

我想要做的是用 UDF 替换通过用户窗体调用计算的方法。使用GUI方式,更新计算比较麻烦;也不可能知道在目标范围数据中执行了哪些计算。出于性能考虑,选择此路径而不是 UDF。由于计算速度很慢,我不能只重用调用外部程序作为 UDF 的用户表单代码部分并完成它,因为它太慢了。VBA 中似乎没有异步执行(与 Excel 2010 中的 xll 不同)。

一个可能的解决方案是在 UDF 开始执行时立即退出它,除非将全局设置为 true。除非从特定的功能区按钮调用重新计算,否则该全局总是错误的。问题是它不断地执行 UDF,一直将这些范围发送到 #N/A 值,所以我无法引用这些范围。另一种方法是创建假公式,即在指定参数和目标范围的单元格上添加注释。这也有很多问题。

所以。关于如何实现假异步计算 UDF 的任何想法?

谢谢!

0 投票
1 回答
250 浏览

excel - 处理 Excel UDF 中的尾随单元?

可能重复:
在 UDF 之上使用 Excel 内置函数

我的 Excel UDF 当前返回一个由数字数据和单位组成的字符串,例如1234 kg. 对用户来说简单易读,但问题是它会阻碍一些使用 Excel 内置函数的基本计算,如Sum()Average()等。

使用上述格式,即,除非删除尾随单元,否则1234 kg使用公式=Sum()不会带来正确的结果。kg

所以我的问题是,有什么方法可以让我们在保持单位不变的同时进行计算?Excel 可以识别1234 kg为数值而不是字符串值吗?

0 投票
28 回答
456472 浏览

excel - 将列号转换为字母的功能?

有没有人有可以从数字返回列字母的 Excel VBA 函数?

例如,输入100应该返回CV

0 投票
1 回答
686 浏览

c# - 如何将不连续的单元格传递给 Excel UDF

在 myUDF 中,我可以引用一系列单元格,如“A1:A12”,但如何引用非连续单元格,如“A1,B4,H3”等。
我使用 ExcelDNA,参数类型是对象,但它似乎会取字符串和一系列单元格,而不是不连续的单元格