共计 1781 个字符,预计需要花费 5 分钟才能阅读完成。
作为一个经常使用 Excel 的人,我经常有定义函数的需求。尽管 VBA 和 Lambda 函数在某种程度上满足了我的需求,但它们都存在一个明显的局限性:函数定义存储在 Excel 文件中,这意味着在不同的文件间共享和使用这些自定义函数变得异常繁琐。因此,我一直在寻找一种更灵活的方法来创建并共享 Excel 自定义函数。知道我发现了 ExcelDNA,它完全满足了我的需求,可以使用 vb 编程,同时也很方便分享函数。
下面是一个详细的过程展示如何使用 excel—dna 创建自定义函数,本文以一个正则替换函数作为案例来说明。
开始使用 Excel-DNA
第一步:创建工程和安装 Excel-DNA
首先在 Visual Studio 中创建一个新的 Class Library 项目开始的,确保选择的是.NET Framework,注意目前的最新的 exceldna1.7 需要.net6.0 以上版本。
接下来选择.NET6.0
点击创建,创建项目成功。
接着,通过 NuGet 安装 Excel-DNA 包。
Install-Package ExcelDna.AddIn
Install-Package ExcelDna.Integration
到了这一步,exceldna 差距和开发环境安装完成。
第二步:编写代码
安装完 Excel-DNA 后,下一步是添加一个新的 VB.NET 类文件,并引入必要的命名空间。接下来,就可以编写自定义函数了。例如,我编写了一个使用正则表达式替换文本的函数,代码如下:
' 引入 Excel-DNA Integration 库,使.NET 代码能够作为 Excel 自定义函数(UDF)运行
Imports ExcelDna.Integration
' 引入 System.Text.RegularExpressions 库,以便使用正则表达式相关功能
Imports System.Text.RegularExpressions
' 定义一个公共模块,其中将包含我们的自定义 Excel 函数
Public Module MyExcelFunctions
' 使用 ExcelFunction 属性定义一个 Excel 自定义函数,描述为“使用正则表达式替换文本”<ExcelFunction(Description:="使用正则表达式替换文本")>
Public Function RegexReplace(
' 定义函数参数:原文本,描述为“要被替换的原始文本”<ExcelArgument(Name:="原文本", Description:= "要被替换的原始文本")> ByVal inputText As String,
' 定义函数参数:正则表达式,描述为“用于匹配文本的正则表达式”<ExcelArgument(Name:="正则表达式", Description:= "用于匹配文本的正则表达式")> ByVal pattern As String,
' 定义函数参数:替换文本,描述为“用于替换的文本”<ExcelArgument(Name:="替换文本", Description:= "用于替换的文本")> ByVal replacementText As String
) As String
Try
' 尝试使用正则表达式替换指定文本,并返回结果
Return Regex.Replace(inputText, pattern, replacementText)
Catch ex As Exception
' 如果过程中出现异常,则捕获异常并返回错误信息
Return "错误:" & ex.Message
End Try
End Function
End Module
第三步:构建项目
项目编写完成后,下一步是构建项目,以生成 XLL 文件,直接点击运行,就可以在 excel 看到效果。
第四步:创建 Excel Add-In
最后,将生成的 DLL 文件和 ExcelDNA 的.xll 文件放在同一个文件夹中,并重命名.xll 文件以匹配你的 DLL 文件名。然后,双击.xll 文件即可在 Excel 中加载你的 Add-In。
[…] 常用查询函数说明: …