曾經(jīng)看到過一個(gè)關(guān)于Excel自毀功能的視頻教程,經(jīng)認(rèn)真學(xué)習(xí)后,我寫下了自己的代碼,分享于此。 實(shí)現(xiàn)思路: 使用VBA創(chuàng)建一個(gè)隱藏的名稱,記錄當(dāng)前工作簿打開的次數(shù),如果次數(shù)超過指定數(shù)值,則自動(dòng)刪除本工作簿。 應(yīng)用范圍: 1、用于VBA開發(fā)時(shí),發(fā)給別人測(cè)試某功能(因測(cè)試版,不應(yīng)發(fā)放到外部,所以添加自刪除功能)。 2、出于其它原因,需要限定用戶使用次數(shù)的。 事件代碼(ThisWorkbook): 在Excel打開時(shí)判斷是否需要讀取運(yùn)行次數(shù)。(首先判斷用戶名稱,避免調(diào)試時(shí),刪掉自己的“勞動(dòng)成果”) Private Sub Workbook_Open() If Application.UserName <> "Name" Then Call ReadOpenCount ThisWorkbook.Save End If End Sub 過程代碼(模塊): 1、添加一個(gè)隱藏的名稱,用于記錄打開的次數(shù)。 Sub AddHiddenNames() ThisWorkbook.Names.Add Name:="OpenCount", Visible:=False, RefersTo:="=0" End Sub 2、讀取工作簿已經(jīng)打開的次數(shù),如果達(dá)到次數(shù)"自毀",未達(dá)到"次數(shù)"+1。(本段代碼,定義的是3次) Sub ReadOpenCount() Dim iCount As Byte iCount = Evaluate(ThisWorkbook.Names("OpenCount").RefersTo) iCount = iCount + 1 If iCount > 3 Then Call KillThisWorkBook Else ThisWorkbook.Names("OpenCount").RefersTo = "=" & iCount End If End Sub 3、實(shí)現(xiàn)“自毀”功能,但是不提示用戶。 Sub KillThisWorkBook() With ThisWorkbook .Saved = True .ChangeFileAccess xlReadOnly Kill .FullName .Close End With End Sub 雖然上述代碼執(zhí)行后,能得到預(yù)期的結(jié)果,但是別忘了,“宏”是可以被禁用的,甚至有的用戶根本不知道該如何“啟用宏”,這就不在本文記述的范圍之內(nèi)了。 |
|