第一步我们需要记录下文档打开的次数,通过这个记录来确定文件第几次被打开,我们需要用到自定义文档的属性,打开-文件-信息-属性-高级属性-自定义,在名称输入opentimes(可以按自己的喜欢的名字命名),类型选数字,取值设为0,即当前打开次数为0
接下来在Excel中按ALT+F11打开VBA编程界面,我们输入如下代码:
简单介绍下代码含义:
Private Sub Workbook_Open() '这个是打开文件簿就会触发以下动作,文件一定要在Thisworkbook下操作,不然不起作用
Dim opentimes As Integer '定义打开次数为整数型opentimes=ThisWorkbook.CustomDocumentProperties("opentimes")._Value + 1 '给opentimes赋值,打开一次增加1
If opentimes > 3
ThenThisWorkbook.ChangeFileAccess xlReadOnly
Kill ThisWorkbook.FullName
Application.Quit
'如果打开次数大于3,文件簿格式设为只读文件,然后删掉
Else
ThisWorkbook.CustomDocumentProperties("opentimes").Value = opentimes
ThisWorkbook.Save
'如果小于等于3,把打开次数更新,然后文件进行保存,这里不会删除文件
End If
End Sub
异常处理
实际操作过程中会出现各种异常情况,我以Microsoft Office 2010来举例,在写完代码保存的时候会出现这样的情况:
解决办法:直接点“是”!
居然还弹出一个窗口阻止我!先点击确定。
解决方法: 点击 Office按钮 Excel选项 信任中心 信任中心设置 个人信息设置 文档特定设置,取消勾选“保存时从文件属性中删除个人信息”复选框。
局限性
1. 收件人改后缀;
2. 收件人收到之后有意无意多拷贝几份;
3. 收件人的计算机不支持VB环境;
4. 收件人收到邮件之后把内容拷贝到另一张工作表中利用;
5. 宏被禁用或者其它各种未知的情况。
领取专属 10元无门槛券
私享最新 技术干货