VBA封装成EXE制作全攻略

上传人:公**** 文档编号:494989587 上传时间:2022-10-12 格式:DOC 页数:4 大小:92KB
返回 下载 相关 举报
VBA封装成EXE制作全攻略_第1页
第1页 / 共4页
VBA封装成EXE制作全攻略_第2页
第2页 / 共4页
VBA封装成EXE制作全攻略_第3页
第3页 / 共4页
VBA封装成EXE制作全攻略_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

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

1、XLS封装成EXE制作全攻略首先申明,将 xls 做成 exe 并不是指就能使您的 VBA 工程受到坚强的保护,当然您可以通过数种方法来提 高 xls 文档 VBA 工程防止查看的保护几率,如屏蔽一些系统热键、监控 VBE 窗口的开启、给文档加上口令 保护、加VBA 口令、使VBA“不可查看”、利用宏表4.0来禁止用户取消宏来查看文档等等,但道高一尺,魔高一丈”,所以就没有必要去追求所谓的完美”加密关于这些保护方法不属本文叙述范围,请版友在论坛上查看相关帖。假如您手头已有一 xls 文档等待封装,假如您机子上已安装有 VB6 开发系统,那么请跟着往下操作:一、用VB制作EXE文件头部分1、打开

2、 VB, “文件”-“新建工程 ”-“标准 EXE”;2、此时会出现名为 Form1 的默认窗体编辑窗口, Form1 将作为软件启动封面窗体,打开该 Form1 的属性窗口,对如下属性进行设置: BorderStyle=0 , StartUpPosition=2 , Icon 与 Picture 属性设置成你需要的图 标(这也将成为你 EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。3、 往窗体中添加一个时钟控件timer1 ,并将其 InterVal 属性设为 1000。4、双击窗体打开代码编辑窗口,录入以下代码:Private Declare Fu

3、nction SetWindowPos Lib user32 (ByVal hwnd As Long, ByVal hWndInsertAfter AsLong, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongPrivate Declare Function GetTempFileName Lib kernel32 Alias GetTempFileNameA (ByVal lpszPath As String, ByVal lpPrefixS

4、tring As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long Private Declare Function GetTempPath Lib kernel32 Alias GetTempPathA (ByVal nBufferLength As Long, ByVal lpBuffer As String) As LongPrivate Const MAX_PATH = 260Private Const EXE_SIZE = 81920 本 EXE 实际字节大小Private Type File

5、SectionBytes() As ByteEnd TypePrivate Type SectionedFileFiles() As FileSectionEnd TypeDim StopTime As IntegerPrivate Sub Form_Activate()If Command() = Then Main1End SubPrivate Sub Form_Load()On Error Resume NextIf Command() = ThenForm1.Visible = TrueSetWindowPos Form1.hwnd, -1, 0, 0, 0, 0, &H2 Or &H

6、1 将封面置为最顶层窗体ElseForm1.Visible = FalseForm1.Timer1.Enabled = TrueEnd IfEnd SubSub Main1()Dim StartXLSByte, I, J As LongDim AppPath, XlsTmpPath As StringDim myfile As SectionedFileDim xlApp As Excel.Application 定义 EXCEL 类Dim xlBook As Excel.Workbook 定义工件簿类Dim xlsheet As Excel.Worksheet 定义工作表类AppPath =

7、 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 Binary As #1ReDim myfile.Files(1)ReDim myfile.Files(1).Bytes(1 To LOF(1) - EXE_SIZE)Open XlsTmpPath For Binary As #2Get #1,

8、 EXE_SIZE + 1, myfile.Files(1).Bytes 此处数字要根据 EXE 实际头文件大小更改设定Put #2, 1, myfile.Files(1).BytesClose #1Close #2Set xlApp = CreateObject(Excel.Application) 创建 EXCEL 应用类Set xlBook = xlApp.Workbooks.Open(FileName:=XlsTmpPath, password:=ldhyob) 打开 EXCEL 工作簿 , 已知该工作簿已加打开口令为 ldhyob ,若您的工作簿没有口令,则将此参数去掉以下星号括起部

9、分代码是往xls 里写数据(也可不往工作簿里写数据的方法,而生成 txt 的方法),作用是保存本 exe 的绝对路径与临时 xls 绝对路径,以便于 EXE 重写更新与临时文件删除I*Set xlsheet = xlBook.Worksheets(temp) 设置活动工作表xlsheet.Cells(1, 1) = AppPath & & App.EXEName & .exe 将该 EXE 完全路径存在工作表单元格内xlsheet.Cells(2, 1) = XIsTmpPath 将该EXE本次运行产生 XLS临时文件路径存在工作表单元格内I*xIApp.Visible = True 设置 E

10、XCEL可见Set xlApp = Nothing 释放 xlApp 对象StopTime = 0Me.Timer1.Enabled = True 启动时钟End SubPrivate Function GetTempFile() As String 用来产生系统临时文件名Dim lngRet As LongDim strBuffer As String, strTempPath As String strBuffer = String$(MAX_PATH, 0) lngRet = GetTempPath(Len(strBuffer), strBuffer)If lngRet = 0 Then

11、 Exit Function strTempPath = Left$(strBuffer , lngRet) strBuffer = String$(MAX_PATH, 0) lngRet = GetTempFileName(strTempPath, tmp, 0&, strBuffer)If lngRet = 0 Then Exit Function lngRet = InStr(1, strBuffer , Chr(0)If lngRet 0 ThenGetTempFile = Left$(strBuffer , lngRet - 1)ElseGetTempFile = strBuffer

12、End IfEnd FunctionPrivate Sub Timer1_Timer()On Error Resume NextIf Command() ThenIf VBA.Dir(Command() ThenKill Command() 删除本次运行遗留的临时 XLS 文件ElseEndEnd IfElseStopTime = StopTime + 1 计时累加If StopTime = 1 Then Unload Me: End 2 秒后自动关闭退出End IfEnd Sub5、可保存工程,如取名为 “工程 1”;6、进行编译, “文件 ”-“生成工程 1.exe ,”此时也可将生成的

13、EXE 另外取名,如取名叫 abc.exe 。7、查看第6步生成的EXE文件字节大小,并将具体数字记下来,并将VB模块中的“ Private Const EXE_SIZE = 81920 保”证一致(这里的 81920 是笔者例子的结果数字,每个人在实际时会有不同) 。此例此步很重要, 必须要做,该数字在 xls 文档 VBA 中还要使用到。至此,文件头部分已做完, abc.exe 文件也已生成于磁盘中。特别提示:编译前,确保VB里工程-引用里Microsoft Excel 9.0 Object Library前面的勾已打上.二、xls 文档部分操作1、给工作簿增加一个工作表 temp ,将其

14、置为隐藏。2、增加 xls 文档宏代码以实现文档关闭时 EXE 数据刷新。打开 xls 文档,打开 VBE 窗口,在 ThisWorkBook 代码区头部加入以下代码:Private Const EXE_SIZE = 81920 此处数字为前面第 7 步得到的 EXE 文件字节数Private Type FileSectionBytes() As ByteEnd Type在 Workbook_BeforeClose 事件中加入如下代码 ( 对原有的代码可保留 ) :Dim myfile As FileSection 定义变量Dim comc, exec, xlsc As String 定义变量

15、Application.Visible = False 隐藏 EXCEL 主窗口exec = WorkSheets( “ temp ” ).cells(1,1).valuexlsc = WorkSheets( “ temp ” ).c).evllasl(u2e,1comc = 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 execOpen exec For Binary As #1 生成新的 EXE 文件Put #1, 1, myfil

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

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