ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创]XLS捆绑成动态EXE一例

[复制链接]

TA的精华主题

TA的得分主题

发表于 2003-11-23 17:58 | 显示全部楼层 |阅读模式

■ldhyob 2003.11 把XLS文件封装成EXE文件,曾在论坛及其他地方见过,通过这种封装,能使开发出来的VBA程序显得非常专业,这是许多VBA爱好者追求的目标之一。但是,大多数生成的EXE文件仅仅是对某一XLS文档的封装演示,并不能保存用户对XLS数据的更改,也就是说当EXE把XLS文档打开后,当用户修改或编辑其中部分数据后关闭退出,然后再重新打开EXE,发现XLS数据并未发生任何改变.这是与我们封装代码的初衷是相违背的,我们必须要实现能接受XLS数据更改的EXE动态捆绑,只有这样,VBA FOR EXCEL的封装才会有意义.此例乃笔者将XLS捆绑成动态EXE的一个尝试. 曾在论坛上发过一张帖子:《我的EXCEL宏文档打开程序》,内容就是用VB6编制EXE主调程序,利用OLE方法对外部XLS进行打开操作.这个例子一定程度上对VBA进行了封装,如:加入了软件启动封面、跳过了宏提示等.但是这种封装的缺点是明显的,就是XLS文档作为外部文件单独存放,既增加了封装成品的文件个数,也使文档的VBA缺少代码保护,即便通过一些常规及非常规方法对文档进行口令保护或"工程不可查看",但因XLS文件在用户面前暴露无遗而极不保险. 基于以上,若将XLS隐匿于EXE中,并且能实现XLS数据的动态更新,将是一件快事!下面笔者将自己尝试的实现原理及思路简要说一下(仅仅是思路,具体做法不赘述),希望能给大家起到抛砖引玉的作用. 实现原理:利用VB的OLE调用与文件二进制读写(通道技术). 实现思路:总的目标就是将VB编译生成的EXE文件头与XLS数据部分捆绑结合,并在XLS关闭时能使EXE数据部分得以更新。 1、VB工程部分:用顶层窗体制作封面;对EXE(即自身)XLS数据进行读取并将其写入一定文件夹然后OLE打开它;借助时钟控件适时关闭封面窗体及退出EXE(此时XLS已经正常打开完毕了,完成VB与EXCEL的无缝连接)。 2、VBA部分:对EXCEL菜单与工具栏、图标进行自定义设置;在工作薄退出事件中增加代码,将XLS内容重新写入EXE中。 3、利用DOS的二进制COPY命令将VB的EXE部分与VBA的XLS部分结合成新的EXE文件。 这种动态EXE文件就制作完成了,它的优点是明显的:拥有自定义的图标作为EXE文件图标,拥有自定义的软件加载封面,拥有更改XLS数据的特性,而偏偏不“拥有”烦人的宏提示!!!缺点主要就是如果文档体积过于庞大,运行速度会有一定影响。 例子XLS部分还是沿用了《我的EXCEL宏文档打开程序》中文档,下载体验一下吧,若有BUG请告知,因为并未认真测试,谢谢! 2003年11月24日20:30分更新

注:如果在2003和XP版本下出现"不信任到Visual Basic Project的程序连接"的信息,主要是因为EXCEL的版本问题,.解决的办法是在菜单"工具"-"宏"-"安全性"的"可靠发行商"选项卡里将下面的"信任对于“Visual Basic 项目”的访问"前面的勾打上即可.

[此贴子已经被作者于2005-10-10 15:47:15编辑过]

[原创]XLS捆绑成动态EXE一例

[原创]XLS捆绑成动态EXE一例

VcWpcfAX.rar

256.45 KB, 下载次数: 2112

[原创]XLS捆绑成动态EXE一例

TA的精华主题

TA的得分主题

发表于 2003-11-23 18:29 | 显示全部楼层
不关怎样,先顶一下,加入精华再说!!!

TA的精华主题

TA的得分主题

发表于 2003-11-23 20:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
斑竹真厉害啊!能否公布源代码呢?我们拭目以待,谢谢!

TA的精华主题

TA的得分主题

发表于 2003-11-23 20:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2003-11-23 20:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
好像还是不能保存修改的结果啊???

TA的精华主题

TA的得分主题

发表于 2003-11-23 20:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
很高兴又看到了楼主的大作,很是羡慕,能告诉偶怎么实现吗?DOS的二进制COPY是怎么回事呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-11-23 20:36 | 显示全部楼层
楼顶文档已更新,原来的没注意菜单命令有问题,呵呵

TA的精华主题

TA的得分主题

发表于 2003-11-23 21:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2003-11-23 21:38 | 显示全部楼层
如能为我用,我的小程序就可以如虎添翼。

TA的精华主题

TA的得分主题

发表于 2003-11-24 09:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
与用vb制作调用excel的区别呢?excel有自封装程序吗?还需要运行库吗?(假如机子上没装excel)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 07:39 , Processed in 0.045008 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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