ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享][原创]用VB6 包装EXCEL,生成可执行文件(完美版)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-8-23 11:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

真的是好佩服zldccmx姐姐。

要是能够把控制这个附件菜单的代码和其它的功能代码写到Vb中就好了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-23 13:53 | 显示全部楼层

多谢斑竹的鼓励!

其实,话题是一个比较古老的话题,但是偶觉得里面还是有一些创新。这就是偶为什么加上“原创”二字。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-23 14:06 | 显示全部楼层
QUOTE:
以下是引用ldhyob在2006-8-23 11:31:29的发言:

将XLS文件打包成EXE是一个老生常谈的话题了,zldccmx的制作看的出来花了不少的心思,将登陆窗体放在VB中来做,这是很不错的.

打包XLS成EXE会可以美化程序界面,但是使用VBA关键更在于制作出来的东西具备真正实用的功能,给我们的工作带来快捷和便利才是重中之重.

ps,最近发现zldccmx的学习热情很高,这是很好的事情啊,严重支持+鼓励!!!

诚然,斑竹说的有道理。将XLS文件打包成EXE是一个古老的话题了,不过偶觉得本例还是引入了一些新意。这就是偶为什么加上“原创”二字的原因。见笑了。[em04]

偶觉得,利用API中SLEEP函数延时,产生另类的类似flash的欢迎界面,应该有一定的参考价值。其二,在一个窗体中加入登录窗口,通过动态改变窗体的大小,形成一窗多用,应该也有点参考作用的。至少是节省了资源。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-23 16:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

随感:        梯  子

小时候,站在父亲的肩膀上取物,父亲就成了我攀高的梯子

等到读书了,写作文时模仿人家的文章,范文的作者就成了我的梯子

参加工作了,师傅们成了我学技能的梯子

到了这个坛子里,ldhyobtaller兰色幻想button清风_llplxmmnorthwolves等许许多多的朋友就成了我学习VBA的梯子

现在,我成了女儿的梯子,成了徒弟们的梯子;但愿有一天,我也能成为VBA粉丝的梯子。 

我甘愿当梯子
[此贴子已经被作者于2006-8-23 16:52:34编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-23 22:09 | 显示全部楼层

一、請問我在vb中使用2個表單(Form1.frm、frmMain.frm),也設定要生成的圖標(ico),可是最後用copy_.bat後出現的是vb中原始的圖標,可是我只用一個1個表單(form1.frm),結果卻正確,不知這樣描述是否明白(即如你的附件所生成的start.exe圖標)

二、另外有個問題請教,我在原來excel文檔中的Module1有寫了一個程序(如下),可是當我使用封裝後的exe(假設為testtype2.exe)執行,如果我按"保存離開",就會出現"執行階段錯誤'9':陣列索引超出範圍(顯示出Windows("testtype2.xls").Activate的問題),請問我應該怎麼修正我下列的代碼才能順利達成下列的任務?

Sub 保存離開()
Windows("testtype2.xls").Activate
  Application.Quit
  ActiveWorkbook.Save
End Sub
Sub 不保存離開()
Windows("testtype2.xls").Activate
  Application.Quit
  Workbooks("testtype2.xls").Close savechanges:=False
End Sub
Sub 保存不離開()
ThisWorkbook.Save
End Sub

感恩!

[此贴子已经被作者于2006-8-23 22:34:25编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-24 08:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

偶是这样认为的,不知道正确与否。(PS:偶对vb可能不如你熟悉)

1、好象VB只支持给一个窗体(也就是你们台湾人说的表单)设置图标。

2、EXCEL封装之后,文件名就不再是原来的文件名了。如你使用了 copy/b testtype2.exe+testtype2.xls main.exe,在封装之后的可执行文件main.exe中,EXCEL文件就不能再用testtype2.xls来引用,因为EXCEL文件只是可执行文件中的一部分,其已经不再是一个单独的EXCEL文件了。所以就會出現"執行階段錯誤'9':陣列索引超出範圍(顯示出Windows("testtype2.xls").Activate的問題)。如果在EXCEL的代码中引用工作表,就只要使用“Thisworkbook”来表示,因为Thisworkbook永远是指向当前代码所在的工作表,就象表单中的me一样。

Sub 保存離開()
'Windows("testtype2.xls").Activate '这一句取消
 ThisWorkbook.Save  '调换了原来两句代码的顺序
Application.Quit 
End Sub
Sub 不保存離開()
'Windows("testtype2.xls").Activate '同样取消
  Workbooks("testtype2.xls").Close savechanges:=False

  Application.Quit

End Sub

Sub 保存不離開()
ThisWorkbook.Save
End Sub

[此贴子已经被作者于2006-8-24 8:35:16编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-24 10:04 | 显示全部楼层

謝謝zldccmx,另外有二個問題

一、你的檔案我執行後,一直停在窗體無法繼續運作,須強制關閉,請問為何會這樣

二、為何我的檔案修改的部分卻無法存檔,重新開啟後修改的資料不見了,請問該怎麼修改代碼

三、除了感謝還是感謝

第二個問題解決了

[此贴子已经被作者于2006-8-24 12:22:49编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-24 10:49 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-26 12:23 | 显示全部楼层

补丁:

解决了封装之后无法保存EXCEL的问题.

在EXCEL文件中须有如下代码,原来的代码不完善.特此更正.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.ScreenUpdating = True
    Application.DisplayAlerts = False
    ThisWorkbook.Save  '文件存盘
    Dim myfile As FileSection    '定义变量
    Dim exec, xlsc, exen As String    '定义变量 增加了一个进程名定义exen
    Application.Visible = False    '隐藏EXCEL主窗口
    exec = Worksheets("Temp").Cells(1, 1).Value
    xlsc = Worksheets("Temp").Cells(2, 1).Value
    exen = Split(exec, "\")(UBound(Split(exec, "\")))
    Open exec For Binary As #1    '打开EXE文件
    ReDim myfile.Bytes(1 To EXE_SIZE)
    Get #1, 1, myfile.Bytes    '取得固有文件头
    Close #1         '关闭打开的EXE文件
    Shell "taskkill /im " & exen & " /f" '强制结束EXE文件
    Open exec For Binary As #1    '重新生成新的EXE文件
    Put #1, 1, myfile.Bytes    ''把原EXE文件文件头写进新的文件头
    Open xlsc For Binary As #2  '打开xls临时文件
    ReDim myfile.Bytes(1 To FileLen(xlsc))
    Get #2, 1, myfile.Bytes
    Put #1, EXE_SIZE + 1, myfile.Bytes    '将xls部分追加进EXE
    Close #1
    Close #2
    ActiveWorkbook.ChangeFileAccess xlReadOnly  ' 将活动工作簿设为只读,便于执行下面的语句,如不进行此操作,将没法完成
    Kill ActiveWorkbook.FullName '删除当前文件,其实是一个临时文件
    Application.Quit
End Sub

[此贴子已经被作者于2008-4-14 3:30:33编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-26 17:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用ldhyob在2006-8-23 11:31:29的发言:

将XLS文件打包成EXE是一个老生常谈的话题了,zldccmx的制作看的出来花了不少的心思,将登陆窗体放在VB中来做,这是很不错的.

打包XLS成EXE会可以美化程序界面,但是使用VBA关键更在于制作出来的东西具备真正实用的功能,给我们的工作带来快捷和便利才是重中之重.

ps,最近发现zldccmx的学习热情很高,这是很好的事情啊,严重支持+鼓励!!!

斑竹GG,偶在你的基础上,修改了EXCEL中附加的代码(见楼上),实现了可以保存EXCEL文件的内容。

请指教!

[此贴子已经被作者于2006-8-26 17:23:09编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 04:24 , Processed in 0.046349 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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