会玩失踪的Excel文件——Excel自杀

会玩失踪的Excel文件——Excel自杀

首页卡牌对战Excel杀更新时间:2024-04-16

各位朋友,你们好。

最近在升级本月14号发布的通讯录管理工具,应朋友们的要求,会增加很多功能,比如:数据导入、数据导出、增加显示一个电话号码、增加保密措施、增加数据联动检索等……更新的工具还在编制中,争取本月内和大家见面。

今天就来和大家分享下文件保密措施中的一个小设置:Excel文件的自*。

为什么要让文件自*呢?假设你的重要数据被不法分子得到了,通过他对文件的一些操作,来触发自*代码的执行,让文件瞬间灰飞烟灭,从而保护我们数据的安全。


一、何为自*代码

Sub Killme() With ThisWorkbook '对当前工作薄 .Saved = True '保存文件 .ChangeFileAccess xlReadOnly '将当前工作簿设为只读。 Kill .FullName 'Kill:从磁盘中删除文件; .Close '关闭Excel End With End Sub

当代码执行到【Kill .FullName】这一句的时候,文件就代码所在的文件【上图中的示例文件】就被删除了。


二、在什么时候执行

自*代码在什么时候执行呢?常规是在文件打开的时候,这里就会用到WorkbookOpen事件

自*代码的放置位置

三、怎么触发代码执行

如果我们直接像上图以所示,将自*代码直接放在Workbook的Open事件中,当文件打开时,文件就直接不见了。但是,现实中肯定不能这样操作,所以,我们需要设置一些条件,当条件成立时,才执行自*代码,条件不成立时,就不执行自*代码。

常用的触发自*代码的条件有以下几种:

1、以日期做判断:

设定一个日期,当电脑系统日期达到了所设置的日期,就执行自*代码。

Private Sub Workbook_Open() Dim 限制日期 As Date '申明变量 限制日期 = "2020/4/18" '设置限制使用日期,根据自己需要设置 If VBA.Date >= 限制日期 Then '判断当前系统日期是否到了限制日期 Application.DisplayAlerts = False '禁止显示提示和警告消息,悄无声息的删除文件 Call Killme '执行自*代码【Killme:第一部分中段代码的过程名称】 End If End Sub

2、以打开次数判断:

对文件打开次数做记录,当打开次数达到设定的次数时,即执行自*代码。

①文件打开次数记录设置

我们在Sheet1的【A1】单元格中,记录文件打开的次数,通过工作薄的【BeforeClose】事件判断。

Private Sub Workbook_BeforeClose(Cancel As Boolean) '在工作表1的【A1】单元格中记录文件打开次数 Sheet1.Range("A1") = Sheet1.Range("A1") 1 ThisWorkbook.Save '保存文件 End Sub

此处为什么用【BeforeClose】事件,因为代码会改变单元格中的内容,如果直接用Open事件,打开时,A1单元格会记录一个打开次数,但是如果没有对数据做保存,这个数据累加就无效。

但是文件打开后必定会关闭,在文件关闭前,对打开次数做记录,就对每次的打开操作做记录。

以文件打开次数作为判断条件,执行文件自*操作,完整代码如下:

3、以密码错误次数判断:

比如我们有一个文件,里面有机密数据,且在文件中设置了登录窗口,每次打开文件的时候都需要验证密码,此时就可以在工作表的某个单元格对密码错误次数错记录,一旦密码错误次数达到了设置的值,即触发文件自*。

也就是说,如果不知道密码的人拿到文件,是无法打开文件,就算他测试密码,一旦密码错误次数过多,文件就自*,这样就很好的保护了我们的数据。

以密码输入错误次数判断,完整的判断代码为:

① 窗体中登录按钮的代码

Private Sub CommandButton1_Click() If TextBox1.Text = "" Then '密码输入框为空时 MsgBox "密码不能为空!请输入密码。", vbOKOnly vbCritical, "警告" ElseIf TextBox1.Text <> 111 Then '密码登录框密码错误时 Sheet1.Range("A1") = Sheet1.Range("A1") 1 'A1单元格次数累加 MsgBox "密码错误,请重新输入。", vbOKOnly vbCritical, "错误" '‘弹出警告 TextBox1.Text = "" '清空密码登录框, '没出错一次,就判断以下A1单元格的值是否达到次数限制的值 If Sheet1.Range("A1") >= 10 Then Application.DisplayAlerts = False '禁止显示提示和警告消息,悄无声息的删除文件 Call Killme '执行自*代码【Killme:第一部分中段代码的过程名称】 End If Else '当密码正确时 MsgBox "登录成功!", vbOKOnly vbInformation, "恭喜" Unload 登录 End If End Sub

②工作薄打开事件代码如下:

'工作薄开启事件 Private Sub Workbook_Open() Sheet1.Select 'sheet1工作表选中 登录.Show '显示登录窗体 End Sub '自*代码 Sub Killme() With ThisWorkbook '对当前工作薄 .Saved = True '保存文件 .ChangeFileAccess xlReadOnly '将当前工作簿设为只读。 Kill.FullName 'Kill:从磁盘中删除文件; .Close '关闭Excel End With End Sub


五、小结

本文分享的是自*代码,文中讲解了自*代码的写法,该怎么用,在什么情况西用等问题。

用自*代码是一种有风险的操作,虽然可以让我们的数据免遭泄露,但是也给自身的数据安全带来隐患,因为一不小心文件就没了,自己的数据就肯可能找不到了。所以一定要慎用。

当然,Excel既然能自*,也可以*其他的文件,这个知识点在这里就不展开讲了,如果别有居心之人利用这种代码,其后果就会不堪设想。


我是上班下班,因为爱好办公软件、喜欢分享。所以来到这里将我的学习心得和踩过的一些坑,和大家聊聊,希望大家学习我成功的经验,避开我踩过的坑。我和你们一起进步。

好了,今天就聊到这里,感谢各位朋友的关注和支持。

如果你喜欢我分享的内容,请点个赞支持下;

如果你觉得我分享的内容对你有帮助,可以关注我;

如果要看我以前分享过的好玩的内容,大家可以去我的主页查看历史文章。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved