EXCEL-VBA文件封装成EXE的方法

合集下载

用VB封装XLS成为exe可完成对XLS文件的保护

用VB封装XLS成为exe可完成对XLS文件的保护

一用VB封装XLS成为exe可完成对XLS文件的保护如何用VB6制作EXCEL作品之启动封面(即用VB启动XCEL)费了不少的精力做好了一个EXCEL的文件,为了避开“是否启用宏”的拦截询问,可将xls文件进行封装成为exe文件。

事先值得注意的是:1、将xls做成exe并不是指就能使您的VBA工程受到坚强的保护,如果有需要,也可在VB封装XLS时设置登陆密码。

为了避免能将XLS文件另存为其他的XLS文件名而失去封装保护,需用VBA代码禁止用户使用“另存为”来保存工作簿,注意先要保护好VBA和工作表。

您可以通过数种方法来提高xls文档VBA工程防止查看的保护几率,如屏蔽一些系统热键、监控VBE窗口的开启、给文档加上口令保护、加VBA口令、使VBA“不可查看”、利用宏表4.0来禁止用户取消宏来查看文档等等。

2、EXCEL有两个自动宏:一个是启动宏(Sub Auto_Open()),另一个是关闭宏(Sub Auto_Close())。

它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。

但是通过VB来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,需要在VB中通过命令来调用。

因此,我们不要在模块Sub Auto_Open()里编写宏代码,而应该在ThisWorkbook的Private Sub Workbook_Open()里来写入代码。

您手头如已做好了一个xls文档等待封装,而且您机子上已安装有VB6系统,那么请进行以下的三大步操作:第一步:用VB制作EXE文件头部分1、打开VB,“文件”-“新建工程”-“标准EXE”;2、此时会出现名为Form1的默认窗体编辑窗口,Form1将作为软件启动封面窗体,打开该Form1的属性窗口,对如下属性进行设置:BorderStyle=0,StartUpPosition=2,Icon与Picture属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面)。

VBA封装成EXE制作全攻略

VBA封装成EXE制作全攻略

VBA封装成EXE制作全攻略VBA(Visual Basic for Applications)是一种用于自动化任务和宏编程的编程语言,通常用于Microsoft Office应用程序中。

封装VBA代码成EXE文件可以实现代码的独立运行,无需依赖特定的Office程序。

以下是将VBA代码封装成EXE文件的全攻略。

第一步:安装VBA编译器第二步:准备VBA代码第三步:使用VBA编译器1.打开VBA编译器软件,并选择“创建新工程”或“新建项目”。

2.在新建项目中,选择“添加文件”或“导入文件”,并选择您准备好的VBA代码文件。

3.确认所选择的文件已正确导入,并在编译器中显示出来。

4.点击“生成EXE”或“编译”按钮,开始将VBA代码编译为EXE文件。

5.等待编译器完成编译过程。

编译器会生成一个可执行文件(EXE文件),该文件可以在没有安装Microsoft Office的计算机上独立运行。

第四步:配置EXE文件1.可以在编译器中选择EXE文件的输出路径和文件名。

建议选择一个易于记忆和识别的文件名,并将文件保存在合适的路径下。

2.配置EXE文件的图标和其他相关信息。

可自定义EXE文件的图标,以使其在运行时更易于识别和区分。

第五步:测试和部署在封装好VBA代码的EXE文件之后,建议进行测试以确保其在不同的计算机上均能正常运行。

将EXE文件复制到没有安装Microsoft Office 的计算机上,并执行文件以验证其功能和兼容性。

在部署EXE文件时,还可以选择为用户提供一些额外的说明和文档,以便帮助用户正确使用该文件。

总结:封装VBA代码成EXE文件可以使代码在没有安装Microsoft Office 的计算机上独立运行。

通过安装VBA编译器、准备和测试VBA代码、使用编译器生成EXE文件,并在部署前进行测试和配置,您可以轻松地将VBA 代码封装成EXE文件,并在其他计算机上分享和使用。

希望以上的全攻略对您有所帮助!。

VBA中常见的文件格式转换与处理方法

VBA中常见的文件格式转换与处理方法

VBA中常见的文件格式转换与处理方法在日常的工作和学习中,我们经常会遇到需要处理各种不同文件格式的情况。

在VBA编程中,掌握常见的文件格式转换和处理方法是非常重要的,可以帮助我们更高效地完成工作。

一、常见文件格式在VBA编程中,我们常见的文件格式包括文本文件(txt)、Excel文件(xls、xlsx)、Word文件(doc、docx)和PDF文件等。

下面将介绍一些常见的文件格式转换和处理方法。

二、文本文件与Excel文件转换1. 将文本文件导入Excel在VBA中,我们可以使用Open语句将文本文件导入Excel。

具体代码如下:```Sub ImportTextFile()Dim FileToOpen As VariantFileToOpen = Application.GetOpenFilename(Title:="选择文本文件", FileFilter:="文本文件 (*.txt), *.txt")If FileToOpen <> False ThenWithActiveSheet.QueryTables.Add(Connection:="TEXT;" & FileToOpen, Destination:=Range("A1")).Name = "导入文本文件".FieldNames = True.RowNumbers = False.FillAdjacentFormulas = False.PreserveFormatting = True.RefreshOnFileOpen = False.RefreshStyle = xlOverwriteCells.SavePassword = False.SaveData = True.AdjustColumnWidth = True.RefreshPeriod = 0.TextFilePromptOnRefresh = False.TextFilePlatform = 437.TextFileStartRow = 1.TextFileParseType = xlDelimited.TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False.TextFileTabDelimiter = True.TextFileSemicolonDelimiter = False.TextFileCommaDelimiter = False.TextFileSpaceDelimiter = False.TextFileColumnDataTypes = Array(1).TextFileTrailingMinusNumbers = True.Refresh BackgroundQuery:=FalseEnd WithEnd IfEnd Sub```此代码通过调用GetOpenFilename函数选择文本文件,然后使用QueryTables对象将文本文件导入到Excel中。

XLS封装成EXE制作全攻略

XLS封装成EXE制作全攻略
XLS封装成EXE制作全攻略
■ ldhyob 2003.12
曾在论坛发表过一张帖,是关于制作动态EXE例子([url]/cdb/viewthread.php?tid=15781[/url])的,大家对此兴趣颇浓,都建议公开详细制作细节,故决定写出此文以帮助关注那张帖的版友们能完全自已独立完成xls2exe的过程,实现简单的封装。首先申明,将xls做成exe并不是指就能使您的VBA工程受到坚强的保护,当然您可以通过数种方法来提高xls文档VBA工程防止查看的保护几率,如屏蔽一些系统热键、监控VBE窗口的开启、给文档加上口令保护、加VBA口令、使VBA“不可查看”、利用宏表4.0来禁止用户取消宏来查看文档等等,但“道高一尺,魔高一丈”,所以就没有必要去追求所谓的“完美”加密……关于这些保护方法不属本文叙述范围,请版友在论坛上查看相关帖。
End Sub
Sub Main1()
Dim StartXLSByte, I, J As Long
Dim AppPath, XlsTmpPath As String
Dim myfile As SectionedFile
Dim xlApp As Excel.Application '定义EXCEL类
假如您手头已有一xls文档等待封装,假如您机子上已安装有VB6开发系统,那么请跟着往下操作:
一、用VB制作EXE文件头部分
1、打开VB,“文件”-“新建工程”-“标准EXE”;
2、此时会出现名为Form1的默认窗体编辑窗口,Form1将作为软件启动封面窗体,打开该Form1的属性窗口,对如下属性进行设置:BorderStyle=0,StartUpPosition=2,Icon与Picture属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。

excel封装方法

excel封装方法

excel封装方法2006年11月14日星期二 15:38Execl简单封装教程作者申明:1、在封装过程中所使用代码的知识产权归原有作者所有,我只负责整理教程和制作插图而已;2、此封装为简单封装,只是为了跳过宏,封装后的文件为exe文件,封装后的文件可以保存;3、不涉及到文件保护方面的功能,如果你是为了保护文件而封装,那么,此教程不适合你;4、此教程只归像我这样的菜鸟学习,高手就不用看此教程了,以免浪费你的时间;封装开始:1、首先你得安装VB6.0软件,(网上有精简版的才5M,本教程也使用VB6.0精简版)2、打开VB6.0新建一个“标准exe”工程,如下图所示:点击打开,如下图:(在这里,我们要做一个启动时的等待界面,把中间的那个form1窗口的标题栏去掉,并设程序图标和背景图以及该程序界面启动时默认屏幕居中方式)要实现上面所说的功能,操作如下:在红框的区域分别找到并按下面的设置即可:BorderStyle=0,StartUpPosition=2,Icon与Picture属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。

设置后的效果如下图所示:(按需要加入自已的图片和指定自已喜欢的图标)接下来的工作,我们要在窗体上面放一个时间控件,点击时间控件按钮,在窗体任何位置拖一个框即可,时间控件就放上去了,如图所示:接下来,双击窗体,会弹出一个代码框(注意不是在时间控件上双击,要在窗体上面双击,也就是显示有启动界面的位置双击)如下图所示:删除里面已有的两行代码,把下面的代码复制进去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 Function 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 lpBuffer 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()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 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 Binary 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 = xlApp.Workbooks.Open(FileName:=XlsTmpPath, password:="ldhyob") '打开EXCEL工作簿,已知该工作簿已加打开口令为ldhyob'以下星号括起部分代码是往xls里写数据(也可不往工作簿里写数据的方法,而生成txt的方法),作用是保存本exe的绝对路径与临时xls绝对路径,以便于EXE重写更新与临时文件删除'*****************************************Set xlsheet = xlBook.Worksheets("temp") '设置活动工作表xlsheet.Cells(1, 1) = AppPath & "\" & App.EXEName & ".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 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 FunctionlngRet = 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() <> "" ThenIf VBA.Dir(Command()) <> "" ThenKill Command() '删除本次运行遗留的临时XLS文件ElseEndEnd IfElseStopTime = StopTime + 1 '计时累加If StopTime = 1 Then Unload Me: End '2秒后自动关闭退出End IfEnd Sub如下图所示:接下来点击工程菜单,选择引用,弹出一个对话框,如图所示:并勾选:Microsoft Excel。

VBA程序打包和部署的方法和工具介绍

VBA程序打包和部署的方法和工具介绍

VBA程序打包和部署的方法和工具介绍VBA(Visual Basic for Applications)是一种用于Microsoft Office应用程序的编程语言,它允许用户使用宏来自动执行各种任务。

当您编写了一个复杂的VBA程序后,将其打包和部署到其他用户的计算机上可能会变得复杂和困难。

本文将介绍一些方法和工具,帮助您轻松地打包和部署VBA程序。

1. 打包VBA程序打包VBA程序是将所有相关文件和依赖项收集到一个单独的文件中,以便在其他计算机上运行。

下面是一些打包VBA程序的方法:a) 使用Microsoft Office自带的打包功能Office中的宏功能可以将所有相关文件打包到一个单独的文件中,以便在其他计算机上运行。

在VBA编辑器中,选择“文件”>“导出文件”,然后选择“导出为文件夹”以将所有相关文件一并导出。

b) 使用第三方打包工具除了Office自带的打包功能外,还有一些第三方工具可以帮助您打包VBA程序。

例如,WinRAR和7-Zip都是常用的打包工具,它们可以将所有相关文件打包为一个压缩文件并进行发布。

2. 部署VBA程序部署VBA程序是将打包后的程序安装到目标计算机上,并确保能够正常运行。

以下是几种常见的部署VBA程序的方法和工具:a) 使用Office自带的安装程序Office自带的安装程序可以帮助您将VBA程序部署到其他计算机上。

在VBA编辑器中,选择“文件”>“导出文件”,然后选择“导出为压缩文件”以将所有相关文件一并导出。

在目标计算机上,运行该压缩文件并按照提示进行安装。

b) 使用Windows InstallerWindows Installer是Windows操作系统的标准安装程序,它可以将应用程序打包为一个独立的安装程序(.msi文件)。

可以使用第三方的安装程序制作工具(如Advanced Installer),将打包的VBA程序制作为一个.msi安装程序,并在目标计算机上运行该.msi文件进行安装。

Excel?VBA的封装,加密

Excel?VBA的封装,加密

Excel?VBA的封装,加密对想发布自己的Excel VBA的开发者来说,Excel VBA本身不提供VBA代码的加密,封装。

目前比较最可靠的Excel VBA代码加密的方法,就是把VBA代码编译成DLL(动态链接库文件),在VBA中调用,从而实现VBA代码的加密,封装,方便和Excel文件整合发布出去。

DLL文件基本没法被破解,除此之外其他的VBA加密方法,都可以被轻易破解。

用户只需要你的Excel文件,和这个dll文件就够了,不必安装其他任何程序。

编译成DLL文件其实很简单。

机子上安装Visual Basic 6.0就可以编译成dll文件了,Visual Basic .Net反倒有点麻烦。

Visual Basic通过OLE(对象链接引擎)技术调用Excel以及其中的对象。

总的来说,VBA代码只要做一些简单修改就可以了。

主要是对Excel对象的引用,不然VB不能识别vba代码中的对象。

比如如下的VBA代码windows(workbook1).activaterange("L50")=1直接放进VB中编译成Dll就会有问题,因为VB不能直接识别range对象。

需要添加几行简单的代码来告诉vb怎么引用excel中的这些对象:dim xlapp as excel.applicatiiondim xlbook as excel.workbookdim xlsheet as excel.worksheetset xlapp=getobject(,"excel.application)set xlbook=getobject(xxx)set xlsheet=xlbook.worksheets(1)然后就照搬你原有的vba代码,但是前面加上对象引用:xlsheet.range("L50")=1对VBA代码做这样修改,在VB中调试通过,就可以成功的把多个sub子程序全部编译封装在一个单独的DLL文件了。

VBA封装成EXE制作全攻略

VBA封装成EXE制作全攻略

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

假如您手头已有一xls文档等待封装,假如您机子上已安装有VB6开发系统,那么请跟着往下操作:一、用VB制作EXE文件头部分1、打开VB,“文件”-“新建工程”-“标准EXE”;2、此时会出现名为Form1的默认窗体编辑窗口,Form1将作为软件启动封面窗体,打开该Form1的属性窗口,对如下属性进行设置:BorderStyle=0,StartUpPosition=2,Icon与Picture属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。

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 Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString 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 FileSectionBytes() 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 &H1 '将封面置为最顶层窗体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 = 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, 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,若您的工作簿没有口令,则将此参数去掉'以下星号括起部分代码是往xls里写数据(也可不往工作簿里写数据的方法,而生成txt的方法),作用是保存本exe的绝对路径与临时xls绝对路径,以便于EXE重写更新与临时文件删除'*****************************************Set xlsheet = xlBook.Worksheets("temp") '设置活动工作表xlsheet.Cells(1, 1) = AppPath & "\" & App.EXEName & ".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 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 FunctionlngRet = 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() <> "" 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”,此时也可将生成的EXE另外取名,如取名叫abc.exe。

封装成EXE方法

封装成EXE方法

XLS封装成EXE制作全攻略曾在论坛发表过一张帖,是关于制作动态EXE例子(/cdb/viewthread. php?tid=15781)的,大家对此兴趣颇浓,都建议公开详细制作细节,故决定写出此文以帮助关注那张帖的版友们能完全自已独立完成xls2exe的过程,实现简单的封装。

首先申明,将xls做成exe并不是指就能使您的VBA工程受到坚强的保护,当然您可以通过数种方法来提高xls文档VBA工程防止查看的保护几率,如屏蔽一些系统热键、监控VBE窗口的开启、给文档加上口令保护、加VBA口令、使VBA“不可查看”、利用宏表4.0来禁止用户取消宏来查看文档等等,但“道高一尺,魔高一丈”,所以就没有必要去追求所谓的“完美”加密……关于这些保护方法不属本文叙述范围,请版友在论坛上查看相关帖。

假如您手头已有一xls文档等待封装,假如您机子上已安装有VB6开发系统,那么请跟着往下操作:一、用VB制作EXE文件头部分1、打开VB,“文件”-“新建工程”-“标准EXE”;2、此时会出现名为Form1的默认窗体编辑窗口,Form1将作为软件启动封面窗体,打开该For m1的属性窗口,对如下属性进行设置:BorderStyle=0,StartUpPosition=2,Icon与Picture属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。

3、往窗体中添加一个时钟控件timer1,并将其InterVal属性设为1000。

4、双击窗体打开代码编辑窗口,录入以下代码:Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndI nsertAfter 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 Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (By Val lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpT empFileName As String) As LongPrivate Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBuff erLength As Long, ByVal lpBuffer 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()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 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 Binary 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 = xlApp.Workbooks.Open(FileName:=XlsTmpPath, password:="ldhyob") '打开E XCEL工作簿,已知该工作簿已加打开口令为ldhyob,若您的工作簿没有口令,则将此参数去掉'以下星号括起部分代码是往xls里写数据(也可不往工作簿里写数据的方法,而生成txt的方法),作用是保存本exe的绝对路径与临时xls绝对路径,以便于EXE重写更新与临时文件删除'*****************************************Set xlsheet = xlBook.Worksheets("temp") '设置活动工作表xlsheet.Cells(1, 1) = AppPath & "\" & App.EXEName & ".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 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 FunctionlngRet = 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() <> "" 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”,此时也可将生成的EXE另外取名,如取名叫abc.exe。

Excel电子表格也能做成EXE可执行文件

Excel电子表格也能做成EXE可执行文件

Excel电子表格也能做成EXE可执行文件有读者在我们频道读编交流的主题社区发帖询问能不能将Excel电子表格文件转换成可执行文件(该帖地址:/l/6368882/100913/6,324/100913.shtml)。

恰好有这么一个软件可以帮助实现这一功能,这个软件的名字叫做DoneEx XCell Compiler,可以点击此处下载30天试用版。

试用版除了有使用期限之外,功能与正式版完全相同。

DoneEx XCell Compiler是目前可以搜索到的唯一能够将微软的Excel电子表格文件(*.XLS)转换成EXE可执行文件的工具软件。

在转换时,能够隐藏原工作簿中的公式和以及将XLA插件嵌入到生成的文件中。

XCell Compiler也允许用户以图片的形式将公司名称或者商标用作最终生成的可执行文件的启动画面(Splash Screen,或称为“闪屏”)。

Excel工作薄制作者经常会面临这样的问题:·竞争者会对其工作簿的逻辑感兴趣并可能拷贝该工作簿·最终用户可能会意外地破坏XLS文件的内容从而造成错误的结果·因为微软的Excel公式对任何人都是透明的所以无法保护象“公式”这样的商业秘密,即使这些机密已经由Excel公式保护起来,也不能避免某些人使用专门的密码获取工具将其轻而易举地破解·使用微软Excel固有的功能无法创建便于分发的文件包·在最终用户的计算机上分发与安装微软Excel插件比较麻烦DoneEx XCell Compiler帮助Excel工作薄制作者避免了以上问题,可以使用该软件创建出一个独立运行的可执行文件,文件内不再显示公式,其它打开此文件的用户无法复制工作簿的结构,也无法查看里面的公式。

不过,生成的可执行文件仍会依赖Excel环境,也就是说,如果要使用该软件,或运行其所生成的EXE文件,计算机中必须已经安装微软的Excel。

Excel 2000及以后版本都可以使用DoneEx XCell Compiler。

将EXCEL直接编辑成EXE文件

将EXCEL直接编辑成EXE文件

将EXCEL直接编辑成EXE文件方法二公开一部分,源程序过会再上,用VB可编写直接控制Excel操作的程序,方法是用VB的OLE自动化技术获取Excel的控制句柄,从而直接控制Excel的一系列操作。

1. 实现VB对Excel的直接控制后,可在用户所编的程序中调用Excel,即从控制界面直接调入Excel,且退出Excel后又回到控制界面。

2. 用VB实现Excel的控制后,所有程序可编译成完整的EXE执行文件,直接在Win 平台上执行,运行环境更为简洁明了,程序更易加密。

3.VB的OLE自动技术目前能实现对Excel多数功能的控制。

操作步骤用VB控制Excel的操作步骤如下:1. 引用Microsoft Excel类型库:*从"工程"菜单中选择"引用"栏;*选择Microsoft Excel X.0 Object Library(X.0为版本号);*选择"确定"。

2. 声明显式数据类型:Dim xlApp as Excel.Application3. 创建新实例,获取Excel的控制句柄:Set xlApp=CreateObject("Excel.Application")4. 由于Excel 启动为不可见,调用后如需使其显示出来用:xlApp.Visible=True5. 对Excel操作完毕后,应交还控制句柄:Set xl=Nothing在得到在Excel对象的控制句柄后,可对其下级对象逐级调用,就同使用VBA差不多:在VB编辑环境中,输入“xlApp.”后一般会自动给出其属性、方法等。

也可按想实现的功能,在Excel中记录宏,然后查看、修改代码,将其放在自己的程序中Option ExplicitDim Db As DatabaseDim Rs As RecordsetPrivate Sub Form_Load()Set Db = OpenDatabase("c:\emp\\book1.xls", False, False, "Excel 8.0;")Set Rs = Db.OpenRecordset("sheet1$")End SubPrivate Sub Form_Unload(Cancel As Integer)Rs.CloseDb.CloseEnd Sub。

VBA代码封装过程

VBA代码封装过程

VBA代码封装过程一、函数和子过程的封装过程二、封装后函数和子过程的调用三、窗体的封装和调用四、com加载项的制作五、利用com加载项制作功能区如果你写VBA代码只是给自己使用或者不介意和别人共享代码,那么就用不到封装。

我们一般用VB6.0作为VBA代码的封装工具,VBA代码的封装在我理解就是将VBA代码修改成VB6.0能运行的代码,然后利用VB6.0可以制作dll文件的特点将所有代码封装在dll文件中,最后我们可以通过安装加载项或者引用的方式在工作表界面或VBA界面调用其中的函数、子过程和窗体。

下面让我们具体看下VBA代码的封装过程(封装调用环境:xp系统,excel2007,VB6.0):一、函数和子过程的封装过程函数和子过程也就是function过程和sub过程。

封装的过程如下:1、在vba编写代码,此次实验的代码如下,包含一个函数过程和一个子过程:Function ceshi(a, b)ceshi = a + bEnd FunctionSub ceshi1()MsgBox End Sub2、打开VB6.0,新建工程,选择ActiveX dll,然后点打开。

3、点打开后在该工程中可以看到工程自带一个类模块,可以修改工程名字和类模块名字,也可以选择默认的工程名和类模块名,修改工程名和类模块名的过程如下,在VB6.0界面右边工程资源管理器窗口(如果没看见该窗口,可点击菜单栏中“视图”菜单的工程资源管理器命令调用)选择工程名(类模块名),然后在下面属性窗口“名称”一行修改成自己想要的名称,这里我们将工程名修改成fengzhuang,类模块名修改成cls14、右键点击类模块,在弹出的快捷菜单中选择查看代码,然后将VBA代码复制到类模块代码窗口中,部分代码要稍作修改,改成VB6.0能识别的代码。

如上面的子过程中出现了application对象,代表excel应用程序,但是在vb6.0直接这样写会出现错误,VB6.0并不能识别这就是一个excel应用程序对象,就像我们在VBA中直接写Dictionary(字典对象)和regexp(正则对象)一样,VBA并不能识别,要VBA能识别这两个对象,要么是创建新的对象(前期绑定和后期绑定),要么是获取已有的对象(前期绑定和后期绑定),因为我们在VBA中运行代码时,excel应用程序已经存在了,所以我们只需要获取已有对象即可。

在-Windows-7-环境下封装-Excel-VBA-代码

在-Windows-7-环境下封装-Excel-VBA-代码

在Windows 7 环境下封装Excel VBA 代码一、安装Visual Basic 6.0在Windows 7 下安装Visual Basic 6.0安装会遇到一些兼容性问题,而Windows XP 则很顺利。

当某些程序必须要在Windows 7 下调试的时候,就一定要面对Windows 7 了。

(一)进入安装文件夹,点击“Setup.exe”运行Visual Basic 6.0安装程序。

(二)出现兼容性问题提示,单击“运行程序”。

(三)进入Visual Basic 6.0安装向导,单击“下一步”。

(四)出现“最终用户许可协议”对话框,选择“接受协议”,单击“下一步”。

(五)进入“产品和用户ID”对话框,在“请输入产品的ID号”处输入ID号,全部输入0至9中的任意一个,然后单击“下一步”。

(六)保持默认选择“安装Visual Basic 6.0中文企业版”,单击“下一步”。

(七)选择公用安装文件夹,采取默认或自定义均可。

然后单击“下一步”(八)再次出现兼容性问题提示,直接单击“运行程序”。

(九)进入Visual Basic 6.0 安装程序,单击“继续”后,单击“确定”。

(十)出现“发现了旧版本的Visual SourceSafe”提示,选择“是”(十一)在选择安装类型对话框中,封装Excel VBA 代码选择“典型安装”即可。

(十二)出现“使用新的Visual SourceSafe数据库格式”提示,选择“是”(十三)开始Visual Basic 6.0安装。

(十四)安装完毕,单击“重新启动Windows”。

重新启动Windows后,自动弹出下面的对话框。

如果需要帮助文档,可单击“下一步”继续安装MSDN,对于Visual Basic 6.0的初学者,建议安装。

在安装MSDN 过程中,插入MSDN安装盘按照提示进行安装。

如果不需要帮助文档,单击“退出”,Visual Basic 6.0安装完成。

VB封装Excel宏代码的三个方法

VB封装Excel宏代码的三个方法

VB封装Excel_VBA成DLL技巧使用VB6.0在WinXP_sp2、Excel 2000环境下制作、测试通过。

一、启动VB6.0:执行:“文件夹(F)”——“新建(N)”——选择“ActiveX DLL”,如下图1:二、引用:VB中对Excel的引用执行:“工程(P)”——“引用(N)”——选择所要引用的项目:如下图2Excel 2000中:Microsoft Excel 9.0 Object LibraryMicrosoft Office 9.0 Object LibraryExcel 2003中:Microsoft Excel 11.0 Object LibraryMicrosoft Office 11.0 Object Library三、编写代码:1、将工程默认名称“工程1”,改为“zygtest”,将类模块默认名称“Class1”,改为“zyg365”,2、在类模块的代码编辑区写入代码:如下图3模块名称为“hongtong”,代码如下在VB中编写代码时:要注意以下声名Dim XLAPP As ObjectSet XLAPP = GetObject(, "Excel.Application")代码中引用对象,如SHEET,Cell等,前面要加“XLAPP.”(或按照Sub hongtong() 中的格式编写。

)Sub hongtong()Dim excelApp As New Excel.ApplicationDim excelWorkBook As Excel.WorkbookDim excelWorksheet As Excel.WorksheetSet excelWorkBook = '创建新工作簿Set excelWorksheet = excelWorkBook.Sheets(1)excelWorksheet.Cells(2, 3) = "宏通" '写入数据excelWorksheet.Cells(3, 4) = "zyg365" '写入数据excelApp.Visible = True '显示excel界面,用于调试excelWorkBook.PrintPreview '打印预览excelWorkBook.PrintOut '打印输出excelWorkBook.Saved = True'excelWorkBook.Close '关闭工作薄'excelApp.Quit '退出excelEnd Sub四、工程属性设置:(可以不设置,本步骤可以省略)为了使自己开发的程序更规范,可以对本工程的属性加以描述:如下图4执行:“工程(P)”——“工程1属性(E)…”(当前工程中为:“zygtest属性(E)…”)五、保存工程、测试、打包生成Dll文件:1、保存:单击保存,保存到一个文件夹中;2、测试:执行工具栏上的“启动”(右向的三角图标)按钮,检查是否存在错误;3、打包生成Dll文件:执行:“文件(F)”——“生成工程1.dll(K)”(当前工程中为:“zygtest.dll”),重命名为“zyg.dll”,至此,Dll文件制作结束。

Execl简单封装教程

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的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。

设置后的效果如下图所示:(按需要加入自已的图片和指定自已喜欢的图标)接下来的工作,我们要在窗体上面放一个时间控件,点击时间控件按钮,在窗体任何位置拖一个框即可,时间控件就放上去了,如图所示:接下来,双击窗体,会弹出一个代码框(注意不是在时间控件上双击,要在窗体上面双击,也就是显示有启动界面的位置双击)如下图所示:删除里面已有的两行代码,把下面的代码复制进去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 Function 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 lpBuffer 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()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 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 Binary 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 = xlApp.Workbooks.Open(FileName:=XlsTmpPath, password:="ldhyob") '打开EXCEL工作簿,已知该工作簿已加打开口令为ldhyob'以下星号括起部分代码是往xls里写数据(也可不往工作簿里写数据的方法,而生成txt的方法),作用是保存本exe的绝对路径与临时xls绝对路径,以便于EXE重写更新与临时文件删除'*****************************************Set xlsheet = xlBook.Worksheets("temp") '设置活动工作表xlsheet.Cells(1, 1) = AppPath & "\" & App.EXEName & ".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 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 FunctionlngRet = 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() <> "" ThenIf VBA.Dir(Command()) <> "" ThenKill Command() '删除本次运行遗留的临时XLS文件 ElseEndEnd IfElseStopTime = StopTime + 1 '计时累加If StopTime = 1 Then Unload Me: End '2秒后自动关闭退出End IfEnd Sub如下图所示:接下来点击工程菜单,选择引用,弹出一个对话框,如图所示:并勾选:Microsoft Excel。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

E X C E L-V B A文件封装成E X E的方法-CAL-FENGHAI.-(YICAI)-Company One1EXCEL VBA文件封装成EXE的方法XLS封装成EXE制作全攻略■ ldhyob写出此文以帮助关注那张帖的版友们能完全自已独立完成xls2exe的过程,实现简单的封装。

首先申明,将xls做成exe并不是指就能使您的VBA工程受到坚强的保护,当然您可以通过数种方法来提高xls文档VBA工程防止查看的保护几率,如屏蔽一些系统热键、监控VBE窗口的开启、给文档加上口令保护、加VBA口令、使VBA“不可查看”、利用宏表来禁止用户取消宏来查看文档等等,但“道高一尺,魔高一丈”,所以就没有必要去追求所谓的“完美”加密……关于这些保护方法不属本文叙述范围,请版友在论坛上查看相关帖。

假如您手头已有一xls文档等待封装,假如您机子上已安装有VB6开发系统,那么请跟着往下操作:一、用VB制作EXE文件头部分1、打开VB,“文件”-“新建工程”-“标准EXE”;2、此时会出现名为Form1的默认窗体编辑窗口,Form1将作为软件启动封面窗体,打开该Form1的属性窗口,对如下属性进行设置:BorderStyle =0,StartUpPosition=2,Icon与Picture属性设置成你需要的图标(这也将成为你EXE的图标)和设计好准备使用的图片(即软件封面),窗体的大小设置成您需要的合适值即可。

3、往窗体中添加一个时钟控件timer1,并将其InterVal属性设为1000。

4、双击窗体打开代码编辑窗口,录入以下代码:Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Lon g, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, B yVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTem pFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPat hA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long Private 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()On Error Resume NextIf Command() = "" Then= TrueSetWindowPos , -1, 0, 0, 0, 0, &H2 Or &H1 '将封面置为最顶层窗体Else= False= TrueEnd IfEnd SubSub Main1()Dim StartXLSByte, I, J As LongDim AppPath, XlsTmpPath As StringDim myfile As SectionedFileDim xlApp As '定义EXCEL类Dim xlBook As '定义工件簿类Dim xlsheet As '定义工作表类AppPath =XlsTmpPath = GetTempFile() '取得XLS临时文件名(带路径)If , 1) = "\" Then AppPath = , - 1)Open AppPath & "\" & & ".exe" For Binary As #1ReDim (1)ReDim (1).Bytes(1 To LOF(1) - EXE_SIZE)Open XlsTmpPath For Binary As #2Get #1, EXE_SIZE + 1, (1).Bytes '此处数字要根据EXE实际头文件大小更改设定Put #2, 1, (1).BytesClose #1Close #2Set xlApp = CreateObject("") '创建EXCEL应用类Set xlBook = password:="ldhyob") '打开EXCEL工作簿,已知该工作簿已加打开口令为ldhyob'以下星号括起部分代码是往xls里写数据(也可不往工作簿里写数据的方法,而生成txt的方法),作用是保存本exe的绝对路径与临时xls绝对路径,以便于EXE重写更新与临时文件删除'*****************************************Set xlsheet = ("temp") '设置活动工作表(1, 1) = AppPath & "\" & & ".exe" '将该EXE完全路径存在工作表单元格内(2, 1) = XlsTmpPath '将该EXE本次运行产生XLS临时文件路径存在工作表单元格内'****************************************= True '设置EXCEL可见Set xlApp = Nothing '释放xlApp对象StopTime = 0= True '启动时钟End SubPrivate Function GetTempFile() As String '用来产生系统临时文件名Dim lngRet As LongDim strBuffer As 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 FunctionlngRet = 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() <> "" ThenIf (Command()) <> "" ThenKill Command() '删除本次运行遗留的临时XLS文件ElseEndEnd IfElseStopTime = StopTime + 1 '计时累加If StopTime = 1 Then Unload Me: End '2秒后自动关闭退出End IfEnd Sub5、可保存工程,如取名为“工程1”;6、进行编译,“文件”-“生成工程”,此时也可将生成的EXE另外取名,如取名叫。

7、查看第6步生成的EXE文件字节大小,并将具体数字记下来,并将VB模块中的“Private Const EXE_SIZE = 81920”保证一致(这里的81920是笔者例子的结果数字,每个人在实际时会有不同)。

此例此步很重要,必须要做,该数字在xls文档VBA中还要使用到。

至此,文件头部分已做完,文件也已生成于磁盘中。

特别提示:编译前,确保VB里"工程"---"引用"里"Microso ft Excel 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_BeforeClose事件中加入如下代码(对原有的代码可保留): Dim myfile As FileSection '定义变量Dim comc, exec, xlsc As String '定义变量= False '隐藏EXCEL主窗口exec = WorkSheets(“temp”).cells(1,1).valuexlsc = WorkSheets(“temp”).cells(2,1).valuecomc = exec & " " & xlscOpen exec For Binary As #1 '打开EXE文件ReDim (1 To EXE_SIZE)Get #1, 1, '取得固有文件头Close #1If (exec) <> "" Then Kill execOpen exec For Binary As #1 '生成新的EXE文件Put #1, 1, '先写入文件头Open xlsc For Binary As #2 '打开xls临时文件ReDim (1 To FileLen(xlsc))Get #2, 1,Put #1, EXE_SIZE + 1, '将xls部分追加进EXEClose #1Close #2Shell comc, vbMinimizedNoFocus ‘删除临时xls文件3、保存文档,退出,关闭EXCEL。

相关文档
最新文档