欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → VBA的封装,加密

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有5432人关注过本帖树形打印复制链接

主题:VBA的封装,加密

帅哥哟,离线,有人找我吗?
solarhe2006
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:252 积分:1001 威望:0 精华:0 注册:2010/2/15 16:47:58
VBA的封装,加密  发帖心情 Post By:2011/12/4 22:04:35 [只看该作者]

对想发布自己的Excel VBA的开发者来说,Excel VBA本身不提供VBA代码的加密,封装。目前比较最可靠的Excel VBA代码加密的方法,就是把VBA代码编译成DLL(动态链接库文件),在VBA中调用,从而实现VBA代码的加密,封装,方便和Excel文件整合发布出去。DLL文件基本没法被破解,除此之外其他的VBA加密方法,都可以被轻易破解。用户只需要你的Excel文件,和这个dll文件就够了,不必安装其他任何程序。 编译成DLL文件其实很简单。机子上安装Visual Basic 6.0就可以编译成dll文件了,Visual Basic .Net反倒有点麻烦。Visual Basic通过OLE(对象链接引擎)技术调用Excel以及其中的对象。 总的来说,VBA代码只要做一些简单修改就可以了。主要是对Excel对象的引用,不然VB不能识别vba代码中的对象。比如如下的VBA代码 windows(workbook1).activate range("L50")=1 直接放进VB中编译成Dll就会有问题,因为VB不能直接识别range对象。 需要添加几行简单的代码来告诉vb怎么引用excel中的这些对象: dim xlapp as excel.applicatiion dim xlbook as excel.workbook dim xlsheet as excel.worksheet set xlapp=getobject(,"excel.application) set xlbook=getobject(xxx) set xlsheet=xlbook.worksheets(1) 然后就照搬你原有的vba代码,但是前面加上对象引用: xlsheet.range("L50")=1 对VBA代码做这样修改,在VB中调试通过,就可以成功的把多个sub子程序全部编译封装在一个单独的DLL文件了。以后直接在VBA中引用这个DLL文件中的各个sub子程序。原来大段的VBA代码全部被封装在DLL文件中,对用户不可见。 开发者还可以在程序运行前显示软件的版权信息,设置密码。因为这些也封装在DLL文件中,所以用户没法破解。

 回到顶部
帅哥哟,离线,有人找我吗?
solarhe2006
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:252 积分:1001 威望:0 精华:0 注册:2010/2/15 16:47:58
VBA的封装,加密  发帖心情 Post By:2011/12/4 22:06:09 [只看该作者]

http://wenku.baidu.com/album/view/bf41e54733687e21af45a90b?pn=0#albumDocs

 回到顶部