ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] vba代码封装为exe,并且在Excel中调用

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-9-27 14:51 | 显示全部楼层 |阅读模式
本帖最后由 yangkaichong 于 2014-9-27 14:54 编辑

由于公司电脑的权限被限制,无法对C盘进行操作。最先开始想file:///C:/users/yangkaikai/appdata/roaming/360se6/User%20Data/temp/121708gyrk5khyokkust1q.jpg通过将vba封装为dll以保护自己的原代码,无奈在公司电脑上运行时无法加载dll文件,报错代码为429,如下图片:
111.jpg
后来偶遇一帖子,讨论如何将vba通过vb6.0封装为exe文件并在vba中调用,如此便能起到保护vba代码的用途。以下链接中讨论了将vba封装为exe的详细过程:
http://club.excelhome.net/forum.php?mod=viewthread&tid=865902

exe文件可以在vba中通过shell函数调用:
http://club.excelhome.net/forum.php?mod=viewthread&tid=827230

但是在操作过程中碰到一个问题:如何将工作薄事件一并封装进exe呢?
以worksheet_change事件为例,可以通过shell函数的传值功能将Target.Row及Target.Column以参数形式传入main()函数,详细代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)    Dim str As String
    Dim she As String
    str = "wkb_change" & "@" & Target.Row & "@" & Target.Column
    she = Shell(ThisWorkbook.path & "\示例.exe" & " " & str, vbNormalFocus)     '中间的空格不能少!
End Sub

注意:中间的“@"是为了分隔各个参数,在main()函数中会用arr = Split(str, "@")语句将其拆封,split的功能可以百度。
file:///C:/users/yangkaikai/appdata/roaming/360se6/User%20Data/temp/121708gyrk5khyokkust1q.jpg


其他不多说,直接上模型,请见附件。
vba封装为exe.rar (62.52 KB, 下载次数: 1406)
最后,引申一下,个人认为在将vba封装为dll时,调试困难,但可以通过在将vba封装为exe的过程中进行相关代码的调试。

TA的精华主题

TA的得分主题

发表于 2014-9-28 09:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
多谢楼主分享,学习下exe封装

TA的精华主题

TA的得分主题

发表于 2015-7-15 12:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢楼主,新手来学习下,希望有帮助

TA的精华主题

TA的得分主题

发表于 2018-7-8 15:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-7-13 15:19 | 显示全部楼层
对于没有编程基础的小白来说太复杂

TA的精华主题

TA的得分主题

发表于 2019-2-16 21:56 | 显示全部楼层
谢谢楼主无私奉献,一直在找封装exe后,转递参数的方法,这确实是一个有效的办法,也想不到更好的方法了。致谢!!!

TA的精华主题

TA的得分主题

发表于 2019-2-16 22:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-6-18 18:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
怎么打开你的还提示429  部件不能创建对象呢

TA的精华主题

TA的得分主题

发表于 2019-6-28 21:17 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-7-2 15:50 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 00:49 , Processed in 0.039597 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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