Execl简单封装教程.docx
- 文档编号:11560829
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:10
- 大小:785.09KB
Execl简单封装教程.docx
《Execl简单封装教程.docx》由会员分享,可在线阅读,更多相关《Execl简单封装教程.docx(10页珍藏版)》请在冰豆网上搜索。
Execl简单封装教程
Execl简单封装教程
作者申明:
1、在封装过程中所使用代码的知识产权归原有作者所有,我只负责整理教程和制作插图而已;
2、此封装为简单封装,只是为了跳过宏,封装后的文件为exe文件,封装后的文件可以保存;
3、不涉及到文件保护方面的功能,如果你是为了保护文件而封装,那么,此教程不适合你;
4、此教程只归像我这样的菜鸟学习,高手就不用看此教程了,以免浪费你的时间;
封装开始:
1、 首先你得安装VB6.0软件,(网上有精简版的才5M,本教程也使用VB6.0精简版)
2、 打开VB6.0新建一个“标准exe”工程,如下图所示:
点击打开,如下图:
(在这里,我们要做一个启动时的等待界面,把中间的那个form1窗口的标题栏去掉,并设程序图标和背景图以及该程序界面启动时默认屏幕居中方式)
要实现上面所说的功能,操作如下:
在红框的区域分别找到并按下面的设置即可:
BorderStyle=0,StartUpPosition=2,Icon与Picture属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。
设置后的效果如下图所示:
(按需要加入自已的图片和指定自已喜欢的图标)
接下来的工作,我们要在窗体上面放一个时间控件,点击时间控件按钮,在窗体任何位置拖一个框即可,时间控件就放上去了,如图所示:
接下来,双击窗体,会弹出一个代码框(注意不是在时间控件上双击,要在窗体上面双击,也就是显示有启动界面的位置双击)如下图所示:
删除里面已有的两行代码,把下面的代码复制进去
PrivateDeclareFunctionSetWindowPosLib"user32"(ByValhwndAsLong,ByValhWndInsertAfterAsLong,ByValxAsLong,ByValyAsLong,ByValcxAsLong,ByValcyAsLong,ByValwFlagsAsLong)AsLong
PrivateDeclareFunctionGetTempFileNameLib"kernel32"Alias"GetTempFileNameA"(ByVallpszPathAsString,ByVallpPrefixStringAsString,ByValwUniqueAsLong,ByVallpTempFileNameAsString)AsLong
PrivateDeclareFunctionGetTempPathLib"kernel32"Alias"GetTempPathA"(ByValnBufferLengthAsLong,ByVallpBufferAsString)AsLong
PrivateConstMAX_PATH=260
PrivateConstEXE_SIZE=81920'本EXE实际字节大小
PrivateTypeFileSection
Bytes()AsByte
EndType
PrivateTypeSectionedFile
Files()AsFileSection
EndType
DimStopTimeAsInteger
PrivateSubForm_Activate()
IfCommand()=""ThenMain1
EndSub
PrivateSubForm_Load()
OnErrorResumeNext
IfCommand()=""Then
Form1.Visible=True
SetWindowPosForm1.hwnd,-1,0,0,0,0,&H2Or&H1'将封面置为最顶层窗体
Else
Form1.Visible=False
Form1.Timer1.Enabled=True
EndIf
EndSub
SubMain1()
DimStartXLSByte,I,JAsLong
DimAppPath,XlsTmpPathAsString
DimmyfileAsSectionedFile
DimxlAppAsExcel.Application'定义EXCEL类
DimxlBookAsExcel.Workbook'定义工件簿类
DimxlsheetAsExcel.Worksheet'定义工作表类
AppPath=App.Path
XlsTmpPath=GetTempFile()'取得XLS临时文件名(带路径)
IfVBA.Right(App.Path,1)="\"ThenAppPath=VBA.Left(App.Path,VBA.Len(App.Path)-1)
OpenAppPath&"\"&App.EXEName&".exe"ForBinaryAs#1
ReDimmyfile.Files
(1)
ReDimmyfile.Files
(1).Bytes(1ToLOF
(1)-EXE_SIZE)
OpenXlsTmpPathForBinaryAs#2
Get#1,EXE_SIZE+1,myfile.Files
(1).Bytes'此处数字要根据EXE实际头文件大小更改设定
Put#2,1,myfile.Files
(1).Bytes
Close#1
Close#2
SetxlApp=CreateObject("Excel.Application")'创建EXCEL应用类
SetxlBook=xlApp.Workbooks.Open(FileName:
=XlsTmpPath,password:
="ldhyob")'打开EXCEL工作簿,已知该工作簿已加打开口令为ldhyob
'以下星号括起部分代码是往xls里写数据(也可不往工作簿里写数据的方法,而生成txt的方法),作用是保存本exe的绝对路径与临时xls绝对路径,以便于EXE重写更新与临时文件删除
'*****************************************
Setxlsheet=xlBook.Worksheets("temp")'设置活动工作表
xlsheet.Cells(1,1)=AppPath&"\"&App.EXEName&".exe"'将该EXE完全路径存在工作表单元格内
xlsheet.Cells(2,1)=XlsTmpPath'将该EXE本次运行产生XLS临时文件路径存在工作表单元格内
'****************************************
xlApp.Visible=True'设置EXCEL可见
SetxlApp=Nothing'释放xlApp对象
StopTime=0
Me.Timer1.Enabled=True'启动时钟
EndSub
PrivateFunctionGetTempFile()AsString'用来产生系统临时文件名
DimlngRetAsLong
DimstrBufferAsString,strTempPathAsString
strBuffer=String$(MAX_PATH,0)
lngRet=GetTempPath(Len(strBuffer),strBuffer)
IflngRet=0ThenExitFunction
strTempPath=Left$(strBuffer,lngRet)
strBuffer=String$(MAX_PATH,0)
lngRet=GetTempFileName(strTempPath,"tmp",0&,strBuffer)
IflngRet=0ThenExitFunction
lngRet=InStr(1,strBuffer,Chr(0))
IflngRet>0Then
GetTempFile=Left$(strBuffer,lngRet-1)
Else
GetTempFile=strBuffer
EndIf
EndFunction
PrivateSubTimer1_Timer()
OnErrorResumeNext
IfCommand()<>""Then
IfVBA.Dir(Command())<>""Then
KillCommand()'删除本次运行遗留的临时XLS文件
Else
End
EndIf
Else
StopTime=StopTime+1'计时累加
IfStopTime=1ThenUnloadMe:
End'2秒后自动关闭退出
EndIf
EndSub
如下图所示:
接下来点击工程菜单,选择引用,弹出一个对话框,如图所示:
并勾选:
MicrosoftExcel。
。
。
。
。
。
如下图:
接下来,编译一下工程,目的是为了看看编译后的exe文件有多大
点击文件菜单\生成工程1.exe 保存位置在桌面上即可.现在桌面上新生成了一个名叫工程1.exe的文件,查看它的属性,并记住大小如下图所示:
(注意,你生成的文件大小(红色部份)可能和我的不一样)
接下来返回VB6.0的代码窗口中,把上面的那个值:
我的文件大小是57344更新到代码窗口中,下图为已替换,如图所示:
接下来,重新编译工程,并取名为abc
点击文件菜单\生成工程1.exe,保存为abc,此时桌面上就会有一个叫abc.exe的程序
此时的abc.exe程序才是我们真正需要的文件,VB部分就做完了,接下来是电子表格设置部份
电子表格设置部份:
在你的工作薄中新建一个表为temp的表名,并隐藏它(隐藏方法:
格式菜单\工作表\隐藏)
按Alt+F11进入VAB编辑器
双击ThisWorkbbok弹出代码窗口,然后把下面的代码复制进去:
PrivateConstEXE_SIZE=81920'此处数字为前面第7步得到的EXE文件字节数
PrivateTypeFileSection
Bytes()AsByte
EndType
’在Workbook_BeforeClose事件中加入如下代码(对原有的代码可保留):
PrivateSubWorkbook_BeforeClose(CancelAsBoolean)
ThisWorkbook.CloseTrue
DimmyfileAsFileSection'定义变量
Dimcomc,exec,xlscAsString'定义变量
Application.Visible=False'隐藏EXCEL主窗口
exec=WorkSheets(“temp”).cells(1,1).value
xlsc=WorkSheets(“temp”).cells(2,1).value
comc=exec&""&xlsc
OpenexecForBinaryAs#1'打开EXE文件
ReDimmyfile.Bytes(1ToEXE_SIZE)
Get#1,1,myfile.Bytes'取得固有文件头
Close#1
IfVBA.Dir(exec)<>""ThenKillexec
OpenexecForBinaryAs#1'生成新的EXE文件
Put#1,1,myfile.Bytes'先写入文件头
OpenxlscForBinaryAs#2'打开xls临时文件
ReDimmyfile.Bytes(1ToFileLen(xlsc))
Get#2,1,myfile.Bytes
Put#1,EXE_SIZE+1,myfile.Bytes'将xls部分追加进EXE
Close#1
Close#2
Application.Quit
Shellcomc,vbMinimizedNoFocus‘删除临时xls文件
EndSub
如下图所示,注意红以框中的数值要和先前生成的abc.exe文件大小一致,我的是57344
然后,保存电子表格为test.xls
全部工作都已准备完毕,接下来就是封装了
把先前生成的程序abc.exe和刚制作的test.xls文件复制到一个专用于封装的文件夹中,如下图:
双击那个"合并.bat",接着,就会生成一个"main.exe"的文件,这个文件真是你最终封装后的文件!
教程完毕.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Execl 简单 封装 教程