Excel用VBA动态口令保护方法介绍.doc

Excel用VBA动态口令保护方法介绍.doc

ID:29816954

大小:104.00 KB

页数:4页

时间:2018-12-24

Excel用VBA动态口令保护方法介绍.doc_第1页
Excel用VBA动态口令保护方法介绍.doc_第2页
Excel用VBA动态口令保护方法介绍.doc_第3页
Excel用VBA动态口令保护方法介绍.doc_第4页
资源描述:

《Excel用VBA动态口令保护方法介绍.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Excel用VBA动态口令保护方法介绍  刚刚在知乎上看到有位网友提出了一个有趣的问题:想把一个Excel工作簿群发给几个朋友,同时不想其他人能够看到工作簿内容,可否通过VBA实现“动态口令”的效果?比如,2017年4月11日打开这个工作簿,就必须输入口令20170411才能看到内容;而2018年5月12日打开工作簿,就必须输入口令20180512。  对于这个问题,我个人的观点是:用VBA来动态生成密码,本质上就是不完备的。因为用户可以在任何时间禁用excel的运行宏功能,此时VBA将失去作用,无论是生成密码

2、还是保护文件都会失效。  那么假如我们假设用户永远启用VBA,这个问题就可以采用事件编程来解决:  首先,在工作簿中新建一个完全空白的工作表,比如我下面例子中把第一张工作表设置为完全空白,然后希望的效果是:如果用户不能输入正确密码,那么就始终让这张工作表显示在最前面,无法看到后面真正有数据的那几张表。  接下来,运用我们《提高篇》中讲解的事件编程知识,打开VBA工程中“ThisWorkbook”的代码页,写入下面这些代码(我在里面加了注释):    好,现在我们保存工作簿为.xlsm文件。然后再次打开时,就是下

3、面的效果了。只要用户输入的密码不正确,就永远无法终止消息框,也就看不到真正的数据表了。    不过这个代码有一个最大的问题,就是一旦用户禁用了宏,那么就可以直接打开工作簿看数据,VBA根本不运行。  怎么解决呢?办法总还是有的,只是实现上要复杂很多。这里提供一个思路:首先,用VBA编写一个加密的私有函数,可以把所有工作表中的重要数据进行加密;然后,再编写一个VBA解密函数。这样,在workbook_open中,当用户输入了正确口令后,调用解密代码将所有表格数据解密;而在workbook_close中,每当关闭时

4、都调用加密代码将所有表格数据加密后再保存退出。最后,将VBA工程进行口令保护,使别人无法看到这些代码。这样,如果用户不启用宏,那么虽然打开工作表也只能看到密文;而一旦启用宏,就必须输入正确口令才可以。除非他找工具破解了VBAProject的口令,然后直接调用运行你的解密函数。  总之还是我最前面讲到的,用VBA动态保护这个工作簿,包括我自己这两种方案在内,都不是无懈可击的,只能是增加破解成本。其实Excel工作簿的口令保护本身也是只是增加了破解成本,真有人想破解的话有很多种方法可以使用。而且楼主想保护的文件是要

5、分发给别人的,所以我们不可能开发系统级程序去修改和扩展别人电脑的Office底层甚至文件系统。所谓凡事皆有定数,我们也不可贪心太多。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。