我有一个简单的存储过程,当您为其提供ID时,它会返回Description和Name。我需要在多个Excel表格中启用此内联。像=ItemLookup('12345')
之类的东西会返回上述信息。
我没有用Excel编程做很多事情,我只是想知道我的选择是什么来解决这个问题。这是VBA还是应该是我注册的外部DLL?两者都觉得有点矫枉过正,但后来才意识到我不知道他们是不是。我真的很想使用VSTO,但听起来这对于Cell级UDF是不可能的,而不必用一些VBA来修改每个工作簿。
答案 0 :(得分:1)
将UDF函数添加到Excel的最佳方法是使用Excel-DNA(我开发的一个免费的开源库),任何.NET语言 - VB.NET,C#和F#都是细
要开始使用,您需要创建一个新的“类库”#39;在Visual Studio(任何版本)中安装项目,安装' Excel-DNA'来自NuGet包管理器的包,并添加您的代码:
Public Module MyDataAccessFunctions
<ExcelFunction(Description:="Gets the Item from the database")>
Public Function ItemLookup(code As String) As String
' Here you have to do some work to get the data
Return "Hello " & code
End Function
End Module
按F5构建并启动Excel,您已完成 - 尝试将=ItemLookup("Paladin")
放入单元格。
生成的加载项是单个.xll文件,您可以在没有任何安装或管理员权限的.NET上复制和使用该文件。它也适用于旧的Excel版本。
支持的最佳位置(包括绝对的初学者和问题)是Excel-DNA Google group。
答案 1 :(得分:0)
您可以使用Excel轻松创建VBA UDF,只需按下alt + f8,右键单击屏幕左侧项目层次结构中的项目,然后单击添加模块。
这是一个快速的Hello World功能,您只需粘贴到模块中,然后单击播放(或从工作表中添加alt + f8)
sub test()
msgbox "helloworld"
end sub
如果是我,我可能只是创建一个需要搜索的文件路径列表。然后创建一个VBA宏,在excel中打开它们,搜索它们以获取密钥,并从找到密钥的行返回其他信息。
如果你习惯了VBA,你可以在不到一个小时的时间内完成这项工作。但是,既然你刚刚开始它可能需要3个多小时,因为你将有更多的研究/调试