[原创]vba---XLS封装成EXE制作全攻略

上传人:ji****72 文档编号:37541411 上传时间:2018-04-18 格式:DOC 页数:8 大小:32.50KB
返回 下载 相关 举报
[原创]vba---XLS封装成EXE制作全攻略_第1页
第1页 / 共8页
[原创]vba---XLS封装成EXE制作全攻略_第2页
第2页 / 共8页
[原创]vba---XLS封装成EXE制作全攻略_第3页
第3页 / 共8页
[原创]vba---XLS封装成EXE制作全攻略_第4页
第4页 / 共8页
[原创]vba---XLS封装成EXE制作全攻略_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《[原创]vba---XLS封装成EXE制作全攻略》由会员分享,可在线阅读,更多相关《[原创]vba---XLS封装成EXE制作全攻略(8页珍藏版)》请在金锄头文库上搜索。

1、原创原创XLS 封装成封装成 EXE 制作全攻略制作全攻略XLS 封装成 EXE 制作全攻略 ldhyob 2003.12曾在论坛发表过一张帖,是关于制作动态 EXE 例子(http:/ 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 与 Picture属性设置成你需要的图标(这也将成为你 EXE 的图标)和设计好准备使用的图片(即软件封面),窗体的大小

3、设置成您需要的合适值即可。3、往窗体中添加一个时钟控件 timer1,并将其 InterVal 属性设为 1000。4、双击窗体打开代码编辑窗口,录入以下代码:Private Declare Function SetWindowPos Lib “user32“ (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongPrivate Declare Fu

4、nction GetTempFileName Lib “kernel32“ Alias “GetTempFileNameA“ (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As LongPrivate Declare Function GetTempPath Lib “kernel32“ Alias “GetTempPathA“ (ByVal nBufferLength As Long, ByVal lpBuffe

5、r As String) As LongPrivate Const MAX_PATH = 260Private Const EXE_SIZE = 81920 本 EXE 实际字节大小Private Type FileSectionBytes() As ByteEnd TypePrivate Type SectionedFileFiles() As FileSectionEnd TypeDim StopTime As IntegerPrivate Sub Form_Activate()If Command() = “ Then Main1End SubPrivate Sub Form_Load(

6、)On Error Resume NextIf Command() = “ ThenForm1.Visible = TrueSetWindowPos Form1.hwnd, -1, 0, 0, 0, 0, &H2 Or &H1 将封面置为最顶层窗体ElseForm1.Visible = FalseForm1.Timer1.Enabled = TrueEnd IfEnd SubSub Main1()Dim StartXLSByte, I, J As LongDim AppPath, XlsTmpPath As StringDim myfile As SectionedFileDim xlApp

7、As Excel.Application 定义 EXCEL 类Dim xlBook As Excel.Workbook 定义工件簿类Dim xlsheet As Excel.Worksheet 定义工作表类AppPath = App.PathXlsTmpPath = GetTempFile() 取得 XLS 临时文件名(带路径)If VBA.Right(App.Path, 1) = “ Then AppPath = VBA.Left(App.Path, VBA.Len(App.Path) - 1)Open AppPath & “ & App.EXEName & “.exe“ For Binar

8、y As #1ReDim myfile.Files(1)ReDim myfile.Files(1).Bytes(1 To LOF(1) - EXE_SIZE)Open XlsTmpPath For Binary As #2Get #1, EXE_SIZE + 1, myfile.Files(1).Bytes 此处数字要根据 EXE 实际头文件大小更改设定Put #2, 1, myfile.Files(1).BytesClose #1Close #2Set xlApp = CreateObject(“Excel.Application“) 创建 EXCEL 应用类Set xlBook = xlA

9、pp.Workbooks.Open(FileName:=XlsTmpPath, password:=“ldhyob“) 打开 EXCEL 工作簿,已知该工作簿已加打开口令为 ldhyob,若您的工作簿没有口令,则将此参数去掉以下星号括起部分代码是往 xls 里写数据(也可不往工作簿里写数据的方法,而生成 txt 的方法),作用是保存本 exe 的绝对路径与临时 xls 绝对路径,以便于 EXE 重写更新与临时文件删除*Set xlsheet = xlBook.Worksheets(“temp“) 设置活动工作表xlsheet.Cells(1, 1) = AppPath & “ & App.EX

10、EName & “.exe“ 将该 EXE 完全路径存在工作表单元格内xlsheet.Cells(2, 1) = XlsTmpPath 将该 EXE 本次运行产生 XLS 临时文件路径存在工作表单元格内*xlApp.Visible = True 设置 EXCEL 可见Set xlApp = Nothing 释放 xlApp 对象StopTime = 0Me.Timer1.Enabled = True 启动时钟End SubPrivate Function GetTempFile() As String 用来产生系统临时文件名Dim lngRet As LongDim strBuffer As

11、String, strTempPath As StringstrBuffer = String$(MAX_PATH, 0)lngRet = GetTempPath(Len(strBuffer), strBuffer)If lngRet = 0 Then Exit FunctionstrTempPath = Left$(strBuffer, lngRet)strBuffer = String$(MAX_PATH, 0)lngRet = GetTempFileName(strTempPath, “tmp“, 0&, strBuffer)If lngRet = 0 Then Exit Functio

12、nlngRet = InStr(1, strBuffer, Chr(0)If lngRet 0 ThenGetTempFile = Left$(strBuffer, lngRet - 1)ElseGetTempFile = strBufferEnd IfEnd FunctionPrivate Sub Timer1_Timer()On Error Resume NextIf Command() “ ThenKill Command() 删除本次运行遗留的临时 XLS 文件ElseEndEnd IfElseStopTime = StopTime + 1 计时累加If StopTime = 1 Th

13、en Unload Me: End 2 秒后自动关闭退出End IfEnd Sub5、可保存工程,如取名为“工程 1”;6、进行编译,“文件”-“生成工程 1.exe”,此时也可将生成的 EXE 另外取名,如取名叫 abc.exe。7、查看第 6 步生成的 EXE 文件字节大小,并将具体数字记下来,并将 VB 模块中的“Private Const EXE_SIZE = 81920”保证一致(这里的 81920 是笔者例子的结果数字,每个人在实际时会有不同)。此例此步很重要,必须要做,该数字在 xls 文档 VBA 中还要使用到。至此,文件头部分已做完,abc.exe 文件也已生成于磁盘中。特别

14、提示:编译前,确保 VB 里“工程“-“引用“里“Microsoft Excel 9.0 Object Library“前面的勾已打上.二、xls 文档部分操作1、给工作簿增加一个工作表 temp,将其置为隐藏。2、增加 xls 文档宏代码以实现文档关闭时 EXE 数据刷新。打开 xls 文档,打开 VBE 窗口,在 ThisWorkBook 代码区头部加入以下代码:Private Const EXE_SIZE = 81920 此处数字为前面第 7 步得到的 EXE 文件字节数Private Type FileSectionBytes() As ByteEnd Type在 Workbook_B

15、eforeClose 事件中加入如下代码(对原有的代码可保留):Dim myfile As FileSection 定义变量Dim comc, exec, xlsc As String 定义变量Application.Visible = False 隐藏 EXCEL 主窗口exec = WorkSheets(“temp”).cells(1,1).valuexlsc = WorkSheets(“temp”).cells(2,1).valuecomc = exec & “ “ & xlscOpen exec For Binary As #1 打开 EXE 文件ReDim myfile.Bytes(1 To EXE_SIZE)Get #1, 1, myfile.Bytes 取得固有文件头Close #1If VBA.Dir(exec) “ Then Kill exec Open exec For Binary As #1 生成新的 EXE 文件Put #1, 1, myfile.Bytes 先写入文件头Open xlsc For Binary As #2 打开 xls 临时文件ReDim myfile.Bytes(1 To FileLen(xlsc)Get #2, 1, myfile.BytesPut #1, EXE_

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号