各位朋友,你们好。
最近在升级本月14号发布的通讯录管理工具,应朋友们的要求,会增加很多功能,比如:数据导入、数据导出、增加显示一个电话号码、增加保密措施、增加数据联动检索等……更新的工具还在编制中,争取本月内和大家见面。
今天就来和大家分享下文件保密措施中的一个小设置:Excel文件的自*。
为什么要让文件自*呢?假设你的重要数据被不法分子得到了,通过他对文件的一些操作,来触发自*代码的执行,让文件瞬间灰飞烟灭,从而保护我们数据的安全。
Sub Killme()
With ThisWorkbook '对当前工作薄
.Saved = True '保存文件
.ChangeFileAccess xlReadOnly '将当前工作簿设为只读。
Kill .FullName 'Kill:从磁盘中删除文件;
.Close '关闭Excel
End With
End Sub
当代码执行到【Kill .FullName】这一句的时候,文件就代码所在的文件【上图中的示例文件】就被删除了。
自*代码在什么时候执行呢?常规是在文件打开的时候,这里就会用到Workbook的Open事件
自*代码的放置位置
三、怎么触发代码执行如果我们直接像上图以所示,将自*代码直接放在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