曾经看到过一个“Excel-Home”出品的“关于Excel自杀功能”的视频教程,经认真学习后,我写下了自己的代码,分享于此。
实现思路:
使用VBA创建一个隐藏的名称,记录当前工作簿打开的次数,如果次数超过指定数值,则自动删除本工作簿。
应用范围:
1、用于VBA开发时,发给别人测试某功能(因测试版,不应发放到外部,所以添加自删除功能)。
2、出于其它原因,需要限定用户使用次数的。
事件代码(ThisWorkbook):
在Excel打开时判断是否需要读取运行次数。(首先判断用户名称,避免调试时,删掉自己的“劳动成果”)
Private Sub Workbook_Open() If Application.UserName <> "Name" Then Call ReadOpenCount ThisWorkbook.Save End If End Sub
过程代码(模块):
1、添加一个隐藏的名称,用于记录打开的次数。
Sub AddHiddenNames() ThisWorkbook.Names.Add Name:="OpenCount", Visible:=False, RefersTo:="=0" End Sub
2、读取工作簿已经打开的次数,如果达到次数"自杀",未达到"次数"+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、实现“自杀”功能,但是不提示用户。
Sub KillThisWorkBook() With ThisWorkbook .Saved = True .ChangeFileAccess xlReadOnly Kill .FullName .Close End With End Sub
虽然上述代码执行后,能得到预期的结果,但是别忘了,“宏”是可以被禁用的,甚至有的用户根本不知道该如何“启用宏”,这就不在本文记述的范围之内了。
时间: 2024-12-20 13:57:05