下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、EXCEL VBA文件封裝成EXE的方法XLS封裝成EXE制作全攻略 ldhyob 2003.12寫出此文以幫助關(guān)注那張?zhí)陌嬗褌兡芡耆砸血毩⑼瓿蓌ls2exe的過程,實現(xiàn)簡單的封裝。首先申明,將xls做成exe并不是指就能使您的VBA工程受到堅強的保護,當(dāng)然您可以通過數(shù)種方法來提高xls文檔VBA工程防止查看的保護幾率,如屏蔽一些系統(tǒng)熱鍵、監(jiān)控VBE窗口的開啟、給文檔加上口令保護、加VBA口令、使VBA“不可查看”、利用宏表4.0來禁止用戶取消宏來查看文檔等等,但“道高一尺,魔高一丈”,所以就沒有必要去追求所謂的“完美”加密關(guān)于這些保護方法不屬本文敘述范圍,請版友在論
2、壇上查看相關(guān)帖。 假如您手頭已有一xls文檔等待封裝,假如您機子上已安裝有VB6開發(fā)系統(tǒng),那么請跟著往下操作: 一、用VB制作EXE文件頭部分 1、打開VB,“文件”-“新建工程”-“標準EXE”; 2、此時會出現(xiàn)名為Form1的默認窗體編輯窗口,F(xiàn)orm1將作為軟件啟動封面窗體,打開該Form1的屬性窗口,對如下屬性進行設(shè)置:BorderStyle=0,StartUpPosition=2,Ico
3、n與Picture屬性設(shè)置成你需要的圖標(這也將成為你EXE的圖標)和設(shè)計好準備使用的圖片(即軟件封面),窗體的大小設(shè)置成您需要的合適值即可。 3、往窗體中添加一個時鐘控件timer1,并將其InterVal屬性設(shè)為1000。 4、雙擊窗體打開代碼編輯窗口,錄入以下代碼:Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, B
4、yVal 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 lpTempFileNam
5、e 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實際字節(jié)大小Private Type FileSection Bytes() As Byt
6、eEnd TypePrivate Type SectionedFile Files() As FileSectionEnd TypeDim StopTime As IntegerPrivate Sub Form_Activate()If Command() = "" Then Main1End SubPrivate Sub Form_Load()On Error Resume NextIf Command() = "" Then Form1.Visible = True SetWindow
7、Pos Form1.hwnd, -1, 0, 0, 0, 0, &H2 Or &H1 '將封面置為最頂層窗體Else Form1.Visible = False Form1.Timer1.Enabled = TrueEnd IfEnd SubSub Main1()Dim StartXLSByte, I, J As LongDim AppPath, XlsTmpPath As StringDim myfile As SectionedFileDim xlApp As Excel.Application '定義EXCEL類
8、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 &
9、".exe" For Binary As #1ReDim myfile.Files(1)ReDim myfile.Files(1).Bytes(1 To LOF(1) - EXE_SIZE)Open XlsTmpPath For Binary As #2 Get #1, EXE_SIZE + 1, myfile.Files(1).Bytes '此處數(shù)字要根據(jù)EXE實際頭文件大小更改設(shè)定 Put #2, 1, myfile.Files(1).BytesClose #1Close #2Set xlApp = Creat
10、eObject("Excel.Application") '創(chuàng)建EXCEL應(yīng)用類Set xlBook = xlApp.Workbooks.Open(FileName:=XlsTmpPath, password:="ldhyob") '打開EXCEL工作簿,已知該工作簿已加打開口令為ldhyob'以下星號括起部分代碼是往xls里寫數(shù)據(jù)(也可不往工作簿里寫數(shù)據(jù)的方法,而生成txt的方法),作用是保存本exe的絕對路徑與臨時xls絕對路徑,以便于EXE重寫更新與臨時文件刪除'*Set xlsheet = xlBook.Works
11、heets("temp") '設(shè)置活動工作表xlsheet.Cells(1, 1) = AppPath & "" & App.EXEName & ".exe" '將該EXE完全路徑存在工作表單元格內(nèi)xlsheet.Cells(2, 1) = XlsTmpPath '將該EXE本次運行產(chǎn)生XLS臨時文件路徑存在工作表單元格內(nèi)'*xlApp.Visible = True '設(shè)置EXCEL可見Set xlApp = Nothing '釋放xlApp對象StopTime
12、= 0Me.Timer1.Enabled = True '啟動時鐘End SubPrivate Function GetTempFile() As String '用來產(chǎn)生系統(tǒng)臨時文件名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$(strB
13、uffer, 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 FunctionPrivat
14、e Sub Timer1_Timer()On Error Resume NextIf Command() <> "" Then If VBA.Dir(Command() <> "" Then Kill Command() '刪除本次運行遺留的臨時XLS文件 Else End End IfElseStopTime = StopTime + 1 '計
15、時累加If StopTime = 1 Then Unload Me: End '2秒后自動關(guān)閉退出End IfEnd Sub 5、可保存工程,如取名為“工程1”; 6、進行編譯,“文件”-“生成工程1.exe”,此時也可將生成的EXE另外取名,如取名叫abc.exe。 7、查看第6步生成的EXE文件字節(jié)大小,并將具體數(shù)字記下來,并將VB模塊中的“Private Const EXE_SIZE = 81920”保證一致(這里的81920是筆者
16、例子的結(jié)果數(shù)字,每個人在實際時會有不同)。此例此步很重要,必須要做,該數(shù)字在xls文檔VBA中還要使用到。 至此,文件頭部分已做完,abc.exe文件也已生成于磁盤中。 特別提示:編譯前,確保VB里"工程"-"引用"里"Microsoft Excel 9.0 Object Library"前面的勾已打上. 二、xls文檔部分操作
17、; 1、給工作簿增加一個工作表temp,將其置為隱藏。 2、增加xls文檔宏代碼以實現(xiàn)文檔關(guān)閉時EXE數(shù)據(jù)刷新。 打開xls文檔,打開VBE窗口,在ThisWorkBook代碼區(qū)頭部加入以下代碼:Private Const EXE_SIZE = 81920 '此處數(shù)字為前面第7步得到的EXE文件字節(jié)數(shù)Private Type FileSection Bytes() As ByteEnd Type在Workbook_BeforeC
18、lose事件中加入如下代碼(對原有的代碼可保留): Dim myfile As FileSection '定義變量Dim comc, exec, xlsc As String '定義變量 Application.Visible = False '隱藏EXCEL主窗口 exec = WorkSheets(“temp”).cells(1,1).value xlsc = WorkSheets(“temp”).cells(2,1).value com
19、c = exec & " " & xlsc Open exec For Binary As #1 '打開EXE文件 ReDim myfile.Bytes(1 To EXE_SIZE) Get #1, 1, myfile.Bytes '取得固有文件頭 Close #1 If 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
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)銷售個人的工作總結(jié)
- 鄉(xiāng)村醫(yī)生先進事跡500字(10篇)
- DB12T 598.17-2015 天津市建設(shè)項目用地控制指標 第17部分:墓葬項目
- 中秋節(jié)的慰問信(5篇)
- 團支部書記競選演講稿四篇
- 新學(xué)期學(xué)習(xí)計劃范本錦集8篇
- 業(yè)務(wù)員的實習(xí)報告范文4篇
- 高等數(shù)學(xué)教程 上冊 第4版 習(xí)題及答案 P177 第7章 多元微積分
- 天然氣公司股東協(xié)議書-企業(yè)管理
- 3D立體風(fēng)立體商務(wù)匯報
- 工程設(shè)計變更申報表(范本)
- (完整版)隧道機電施工方案
- 可燃氣體探測報警系統(tǒng)簡介及使用要求全解析
- 《大衛(wèi)科波菲爾》課件36張統(tǒng)編高中語文選擇性必修上冊
- 各國鋼材牌號對照大全
- 華為HCIP H31-341 V2.5傳輸認證考試題庫大全-上(單選、多選題匯總)
- 小學(xué)生數(shù)學(xué)思維品質(zhì)的調(diào)查研究的開題報告
- DB51T3080-2023研學(xué)旅行實踐承辦機構(gòu)服務(wù)與管理規(guī)范
- 蘇教版三年級數(shù)學(xué)上冊《筆算兩、三位數(shù)除以一位數(shù)》評課稿
- GB/T 7702.7-2023煤質(zhì)顆?;钚蕴吭囼灧椒ǖ?部分:碘吸附值的測定
- 中國歷史的教訓(xùn)-習(xí)驊
評論
0/150
提交評論