ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3382|回复: 3

[推荐] Powerbasic做DLL封装UDF

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-3-13 01:12 | 显示全部楼层 |阅读模式
[广告] 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,成功了








TA的精华主题

TA的得分主题

发表于 2013-3-13 01:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
xll有啥不能说的,会的人遍地都是

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-13 01:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
liucqa 发表于 2013-3-13 01:40
xll有啥不能说的,会的人遍地都是

高手,会C的写那玩意容易,俺是不会C的,只能用Basic写。会咋都不说,我Google了N多天,国内国外基本上没教程,我把源码和SDK狠学了一遍。。。

TA的精华主题

TA的得分主题

发表于 2013-3-13 03:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
其实,PowerBasic也能做XLL的,官方论坛上找过一个例子,有牛人把C的头文件改写成PowerBasic的头文件了,例子压缩包直接发上来,具体链接自己去Google吧

Excel32API.zip

31.81 KB, 下载次数: 62

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-5 23:49 , Processed in 0.042701 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表