资源描述:
《excelvba文件封装成exe的方法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、EXCELVBA文件封装成EXE的方法XLS封装成EXE制作全攻略■ldhyob 2003.12写出此文以帮助关注那张帖的版友们能完全自已独立完成xls2exe的过程,实现简单的封装。首先申明,将xls做成exe并不是指就能使您的VBA工程受到坚强的保护,当然您可以通过数种方法来提高xls文档VBA工程防止查看的保护几率,如屏蔽一些系统热键、监控VBE窗口的开启、给文档加上口令保护、加VBA口令、使VBA“不可查看”、利用宏表4.0来禁止用户取消宏来查看文档等等,但“道高一尺,魔高一丈”,所以就没有必要
2、去追求所谓的“完美”加密……关于这些保护方法不属本文叙述范围,请版友在论坛上查看相关帖。 假如您手头已有一xls文档等待封装,假如您机子上已安装有VB6开发系统,那么请跟着往下操作: 一、用VB制作EXE文件头部分 1、打开VB,“文件”-“新建工程”-“标准EXE”; 2、此时会出现名为Form1的默认窗体编辑窗口,Form1将作为软件启动封面窗体,打开该Form1的属性窗口,对如下属性进行设置:BorderStyle=0,StartUpPosition=2,Icon与Pictu
3、re属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。 3、往窗体中添加一个时钟控件timer1,并将其InterVal属性设为1000。 4、双击窗体打开代码编辑窗口,录入以下代码:PrivateDeclareFunctionSetWindowPosLib"user32"(ByValhwndAsLong,ByValhWndInsertAfterAsLong,ByValxAsLong,ByValyAsLong,ByVal
4、cxAsLong,ByValcyAsLong,ByValwFlagsAsLong)AsLongPrivateDeclareFunctionGetTempFileNameLib"kernel32"Alias"GetTempFileNameA"(ByVallpszPathAsString,ByVallpPrefixStringAsString,ByValwUniqueAsLong,ByVallpTempFileNameAsString)AsLongPrivateDeclareFunctionGetTempPa
5、thLib"kernel32"Alias"GetTempPathA"(ByValnBufferLengthAsLong,ByVallpBufferAsString)AsLongPrivateConstMAX_PATH=260PrivateConstEXE_SIZE=81920'本EXE实际字节大小PrivateTypeFileSection Bytes()AsByteEndTypePrivateTypeSectionedFile Files()AsFileSectionEndTypeDimStopTi
6、meAsIntegerPrivateSubForm_Activate()IfCommand()=""ThenMain1EndSubPrivateSubForm_Load()OnErrorResumeNextIfCommand()=""Then Form1.Visible=True SetWindowPosForm1.hwnd,-1,0,0,0,0,&H2Or&H1'将封面置为最顶层窗体Else Form1.Visible=False Form1.Timer1.Enabled=TrueEndIfEn
7、dSubSubMain1()DimStartXLSByte,I,JAsLongDimAppPath,XlsTmpPathAsStringDimmyfileAsSectionedFileDimxlAppAsExcel.Application'定义EXCEL类DimxlBookAsExcel.Workbook'定义工件簿类DimxlsheetAsExcel.Worksheet'定义工作表类AppPath=App.PathXlsTmpPath=GetTempFile()'取得XLS临时文件名(带路径)IfVBA
8、.Right(App.Path,1)=""ThenAppPath=VBA.Left(App.Path,VBA.Len(App.Path)-1)OpenAppPath&""&App.EXEName&".exe"ForBinaryAs#1ReDimmyfile.Files(1)ReDimmyfile.Files(1).Bytes(1ToLOF(1)-EXE_SIZE)OpenXlsTmpPathForBinaryAs#2 G