不加载分析工具库,单一调用其中函数 的方法 EXCEL 提供了“分析工具库”加载宏 里面有100多个函数,要使用这些函数,通常要进行手工加载 菜单栏 : 工具 --》 加载宏 在弹出的窗体里面 勾选 分析工具库 。 比如求最小公倍数(lcm)单元格里输入 =LCM(36,90,72) 可以得到 360 如果我只需要这一个函数 而又不想手工加载分析工具库,可以使用run 方法来单一调用 lcm函数 先看一下run的帮助 运行一个宏或者调用一个函数。该方法可用于运行用 Visual Basic 或 Microsoft Excel 宏语言编写的宏,或者运行 DLL 或 XLL 中的函数。 expression.Run(Macro, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30) expression 必需。该表达式返回一个 Application 对象。 Macro Variant 类型,可选。所要运行的宏。既可以是一个带有宏名的字符串,也可以是指示此函数所在位置的 Range 对象,或者是一个已注册的 DLL (XLL) 函数的注册号。如果使用字符串,将在当前工作表环境中对此字符串求值。 Arg1-Arg30 Variant 类型,可选。传递给函数的参数。 “一个已注册的 DLL (XLL) 函数的注册号”可以用宏表函数 REGISTER 来获取 而在VBA中运行 宏表函数 要用 ExecuteExcel4Macro 方法 id = ExecuteExcel4Macro("REGISTER.ID(""" & Application.LibraryPath & "\Analysis\ANALYS32.XLL"",""lcm"")")
注意 ""lcm"" 此处的 lcm 为函数名,并区分大小写。 运行此代码后 即便没有加载“分析工具库”, 在单元格中已经可以使用 lcm函数 如要在VBA代码中使用 则加一句 id = ExecuteExcel4Macro("REGISTER.ID(""" & Application.LibraryPath & "\Analysis\ANALYS32.XLL"",""lcm"")") x = run(id,36,90,72) 'x= 360 ANALYS32.XLL中的函数名称并非全部都是小写,而是大小写混杂。 在手工加载“分析工具库”后,运行以下过程可以得到真实的函数名。 Sub getfnNAME theArray = Application.RegisteredFunctions If IsNull(theArray) Then MsgBox "No registered functions" Else For i = LBound(theArray) To UBound(theArray) For j = 1 To 3 Worksheets("Sheet1").Cells(i, j). _ Formula = theArray(i, j) Next j Next i End If End sub 这样就能实现对函数的 单一调用。 |