夜雨聆风学习资料网

ARTICLE · 1216879

如何让EXCEL表格"阅完即焚"?防止数据外传

如何让EXCEL表格"阅完即焚"?防止数据外传
点亮☆星标,不错过精彩分享


之前我写过一篇关于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 Worksheet    On Error Resume Next    Set wksTarget = ThisWorkbook.Worksheets("数据表")    Application.DisplayAlerts = False        wksTarget.Delete        ThisWorkbook.Save    Application.DisplayAlerts = True    On Error GoTo 0End Sub

对方看完数据,只要一关闭,就会自动删除数据表,且不需要用户是否点保存,EXCEL自动保存。

下次再打开这个表时,数据表已经不存在了,只有一个提示表;

当然,可能会有人问,如果对方截图呢?

这个思路实现的主要是搏一个信息差的问题,因为大部分时候绝大部分人收到文件后,一般不会想到你会用这个方式加密,第一次打开一般不会想到截图。等反应过来,数据表已被删除;

第二,我们可以再加上其它常规的加密方法:比如增加打开文件的加密,增加VBA后台的加密,配合其它常规的方法。

这个方案思路,主打一个出其不意地把数据删除;

还有什么更好的方法和思路,欢迎评论区交流。

往期干货文章学习推荐:


根据Excel数据批量填充生成WORD文件

安利一个小巧灵活的抽奖工具,无须安装联网,活动气氛搞起来!

有跨天夜班打卡的班次,建议你更换这几个考勤机

Excel如何筛选指定时间点范围区间内的数据?比如8:06-12:39间的数据?

相关学习资料