ARTICLE · 1216879
如何让EXCEL表格"阅完即焚"?防止数据外传
点亮☆星标,不错过精彩分享之前我写过一篇关于EXCEL数据加密的文章:
有朋友问:即使普通的加密很容易破解,有没有一种方法,可以把我的表格发给别人,别人看完就自动删除?或者过了一天就自动删掉?
数据删除总比别人解密好吧?删除了,别人也没必要解密了。

比如,我想把这个表发给别人看,只允许看一次,看过后自动删除。
我今天分享一个思路,在达到的效果是这样的:
1、只能在一台电脑上打开查看数据;
2、打开看完数据后,关闭表格时,自动删除数据;
这样,发出去的表格,别人只要打开一次,关闭后,下次再打开就没有数据了。
思路是这样的:很简单并不复杂,主打一个无意识防范;
1、用VBA将所有数据工作表深度隐藏
深度隐藏的工作表,在EXCEL表格界面是无法取消隐藏的,对方也看不到是否有表格在隐藏;

如图,工作簿中是有两张表的,但表格状态下,只能看到一张,且无法通过菜单操作取消隐藏;
在VBE窗口模块中输入这个代码:

Sub hide()ThisWorkbook.Sheets("数据表").Visible = xlSheetVeryHiddenEnd Sub
2、引导对方必须点“启用宏”才能查看数据
因为我们后面的数据“阅完即删”是通过VBA控制的,VBA运行有一个前提:必须要启用宏才能运行,但不管是EXCEL还是WPS,软件默认是禁用宏的;
所以,必须引导对方点启用宏,如何引导?
我们上一步已经把重要的数据隐藏起来了,对方打开表是看不到数据表的,我们可以增加一个提示工作表,提示打开的人,要点“启用宏”才能看到数据;

对方点启用宏后,VBA就可以有了运行的环境,才可以进行后面的操作;
3、显示数据表
在VBE窗口的thisworkbook对象的OPEN事件中,添加一个工作显示代码
Private Sub Workbook_Open()On Error Resume NextThisWorkbook.Sheets("数据表").Visible = xlSheetVisibleOn Error GoTo 0End Sub
这样,用户打开表格,看到提示,点启用宏后,数据表就可以展示出来,数据表如果不允许对方修改,我们可以对工作表进行加密;

这个用普通的工作表保护就行了,这个加密很容易破解,这个不重要。这一步只是为了不让对方修改编辑数据而已,后面我们要整个数据表都删除的,所以这一步不那么重要;
3、删除数据表
不管对方打开工作簿多久,总要关闭的对不对?或者总该要下班关电脑的吧。
我们再在工作簿colse事件中,添加一个删除的代码:
Private Sub Workbook_BeforeClose(Cancel As Boolean)Dim wksTarget As WorksheetOn Error Resume NextSet wksTarget = ThisWorkbook.Worksheets("数据表")Application.DisplayAlerts = FalsewksTarget.DeleteThisWorkbook.SaveApplication.DisplayAlerts = TrueOn Error GoTo 0End Sub
对方看完数据,只要一关闭,就会自动删除数据表,且不需要用户是否点保存,EXCEL自动保存。
下次再打开这个表时,数据表已经不存在了,只有一个提示表;

当然,可能会有人问,如果对方截图呢?
这个思路实现的主要是搏一个信息差的问题,因为大部分时候绝大部分人收到文件后,一般不会想到你会用这个方式加密,第一次打开一般不会想到截图。等反应过来,数据表已被删除;
第二,我们可以再加上其它常规的加密方法:比如增加打开文件的加密,增加VBA后台的加密,配合其它常规的方法。
这个方案思路,主打一个出其不意地把数据删除;
还有什么更好的方法和思路,欢迎评论区交流。















































































