|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 rightniche 于 2013-3-13 02:44 编辑
Powerbasic可以干这个事,至少一些简单的UDF,至少不用调用Excel内部功能的UDF,比方说写了个什么数学函数之类的,想保密代码,用Powerbasic做独立DLL(除了Excel,无其他依赖项),在EXCEL里调用,很简单,不麻烦。貌似这个话题网上说的人很少,我来废话几句吧。。。先介绍个简单的套路: DLL+XLA
简单示例源码:
#COMPILE DLL "MYDLL"
#DIM ALL
FUNCTION ADDING2 ALIAS "ADDING2" (BYVAL N1 AS DOUBLE, BYVAL N2 AS DOUBLE) EXPORT AS DOUBLE
ON ERROR GOTO ErrHandling
FUNCTION = N1+N2
GOTO TheEnd
ErrHandling:
FUNCTION = 0
TheEnd:
END FUNCTION
’------------------------
说明:0. 不知道理解的对不对,和VB6做封装不一样,这种DLL或者按XLLSDK方法做XLL不是用COM。。。
1. 如果没有乱七八糟的依赖和设置,可以把LIBMAIN省略
2. 编译成MYDLL.DLL,可以把这个DLL放到..windows\system32\,或者设置PATH
3. 写个XLA加载宏,插入一个模块,对于上面这个例子,仅一行,做个函数声明:
Declare Function ADDING2 Lib "MYDLL.DLL" _
Alias "ADDING2" (BYVAL N1 AS DOUBLE, BYVAL N2 AS DOUBLE) As Double
4. 这样一来,ADDING2这个函数会被加入“用户定义"列表,此外,还可以用.bas文件(导出.bas,编辑后再导入),在函数声明下面加描述:
Attribute ADDING2 VB_Description =“N1+N2求和”
5. 最后成形的东西包括一个DLL,一个XLA,第一次使用时比用XLA多一道程序,就是把DLL放到system32,之后就和用XLA一样了。
Powerbasic也可以做能调用Excel内部功能(比如WorkSheetFunction)的DLL或者XLL,当然了XLL做起来麻烦些,不过确实很酷,一个XLL解决问题,Powerbasic官网的例子里还多挂了一个DLL,没必要。Powerbasic官网给的例子头文件什么的做的挺好,就是代码比较乱,后来貌似也没更新过,不过确实能用,我试着做了一两个XLL,成功了
|
|