【发布时间】:2015-02-09 19:09:54
【问题描述】:
编辑:我想做的真正解决方案可以在这篇帖子here 上找到。我只是想将一些已编译的函数公开给 Excel。事实证明,使用 Excel DNA nuget 包非常容易。您只需添加一个类库,添加 nuget 包,然后复制粘贴自述文件中的代码。单击 F5,它会启动已加载加载项的 excel。如果您希望您的功能被持久化,您只需通过“开发人员”功能区部分手动将加载项添加到 excel 文件中。
原帖: 我按照this microsoft 发布的关于如何创建自动化加载项的说明进行操作。代码编译得很好,我可以从 Excel 中访问这些函数。但是这些功能不起作用。当我尝试将函数调用的结果分配给单元格时,我几乎总是得到 #value 或 #ref 错误。具体来说:
Microsoft 提供的以下功能不起作用。它在我尝试使用它的单元格中显示#value 错误。我使用鼠标选择随机单元格范围作为函数的参数。
Public Function NumberOfCells(ByVal range As Object) As Double
Dim r As Excel.Range = TryCast(range, Excel.Range)
Return CDbl(r.get_Cells.get_Count)
End Function
我创建的以下函数不起作用。我收到#ref 错误。我通过直接传递整数 ( Add1(1,2) ) 或包含数字的单元格来调用它。
Public Function Add1(ByVal i1 As Integer, ByVal i2 As Integer) As Integer
return i1+i2
End Function
我创建的以下函数有效(?!?):
Public Function Add1(ByVal i1 As Integer, ByVal i2 As Integer) As Integer
return 222
End Function
我在 c# 方面非常有经验,但在 vb.net 方面完全没有,但是对于这个插件,我需要使用 vb.net。我怀疑这里缺少一些简单的东西,但我不知道它是什么。微软提供的代码不起作用也很奇怪。
编辑:我还复制粘贴了 here 提供的函数,我在 excel 中得到了相同的 #Value 错误。我从一开始就没有按照这篇文章中的教程进行操作,但我会在白天进行。
编辑 2:我发现每当您在函数名称中添加数字时,Microsoft 的代码由于某种原因无法正常工作。如果我将上面示例代码中的 Add1 重命名为 Addqweqew,它将起作用!
【问题讨论】:
-
当您说“不起作用”时,您针对每种情况具体遇到了什么错误?您使用什么数据来测试这些功能?
-
相应地编辑了帖子!
标签: vb.net excel excel-addins office-automation