当前位置:具才苑资料频道站主习作电脑辅教

Excel作品的保护方法

作者:陈具才  来源:本站整理  发布/更新时间:2012-10-04 15:12:26

  如果你是Excel开发爱好者,当你辛辛苦苦开发出程序作品后,是不是想过怎样来保护好程序的源代码呢?遗憾的是,Excel不像其他的开发软件一样,在加密上很容易被各种密码破解软件破译。尽管这样,我们也应尽可能来保护Excel工作簿和VBA源码。下面是笔者自己用过的或是从网上搜集到的几种方法,贡献出来与大家分享!
  一、为VBA工程设置密码
  限制别人查看VBA源代码的一个简单办法就是设置VBA工程密码或设置工程不可查看。方法如下:
  1、按Alt+F11,在VBE窗口在,单击“工具—VBAproject属性”,打开“VBAproject属性”对话框。
  2、单击“VBAproject属性”对话框中的“保护”选项卡。选中“查看时锁定工程”复选框。在“密码”框中输入保护密码,在“确认密码”框中再输入一次密码,然后单击“确定”,关闭“VBAproject属性”对话框。
  3、保存并关闭工作簿。
  当你再打开该工作簿后,打开VBE窗口时,就不再显示VBA的窗体、模块等对象,看不到VBA源代码了。
  ★提示:这种密码保护很容易破解。★
  二、设置工程不可查看
  限制别人查看VBA源代码的方法就是设置“工程不可查看”。方法如下:
共享级锁定:先对Excel文件的“VBAProject工程”进行密码保护(参考“为VBA工程设置密码”)。再打开要保护的文件,单击“工具_保护_保护并共享工作簿_以追踪修订方式共享”,输入保护密码再保存文件。当你得新打开“VBAProject”工程属性时,就将会提示:“工程不可看!”
  破坏型锁定:用16进制编辑工具(如WinHex等)打开Excel文件,查找定位以下地方: ID="{00000000-0000-0000-0000-000000000000}"(注:实际显示不会全部为0),此时,你只要将其中的字节随便修改一下即可。
  ★提示:在修改前最好做好你的文档备份。当然这种方法也可破解的,因为加密总是相对。★
  三、防止强制中断方式查看VBA代码
  有时,我们可以通过运行程序,然后在运行的过程中强制按“Ctrl+Break”强制中断程序运行,进VBE编辑器查看源码。为此,我们可以在工作簿的open事件中加入以下语句来屏蔽“Ctrl+Break”组合键:
  Application.EnableCancelKey = xlDisabled
  如果要恢复“Ctrl+Break”组合键,则用下面的语句:
  Application.EnableCancelKey = xlInterrupt
  四、禁用宏则关闭Excel文件
  当打开含有宏的文件时,如果“禁用宏”并打开文件后,所有编辑的VBA程序将失效。如何当用户打开Excel文件并禁用宏时,让文件自动关闭呢?
  我们可以通过调用Excel4.0版(Excel的一个老版本)的宏命令来解决这个问题。因为“禁用宏”功能无法禁用4.0版本的宏。当您设置完成,再打开文件并点击禁用宏时,系统就会弹提示信息:对不起,由于你未启用宏,本文件将关闭。单击“确定”后文件就会自动关闭。
  设置步骤和使用方法:
  (1)打开要设置的文件,在VBE编辑器中添加一个模块。写入以下代码:
  Function NoRunMacro ()  ’A3单元格中的字符
  End Function
  (2)在任一个工作表标签上单元格右键,执行“插入”命令打开对话框,在常用选项卡中选取“MS Excel4.0宏表”项,然后单击“确定”按钮,在当前工作簿中就会新建一个默认名Macro1的“宏表”,更改表名为“宏表1”。
  在宏表的以下单元格中输入公式:
  A2单元格: =ERROR(FALSE)
  A3单元格: =RUN("MY")
  A4单元格: =IF(ISERROR($A$3))
  A5单元格: =GOTO($A$11)
  A6单元格: =END.IF()
  A7单元格: =ERROR(TRUE)
  A8单元格: =RETURN()
  A11单元格:=ALERT("对不起!由于禁用了宏,本文件将自动关闭!",3)
  A12单元格:=FILE.CLOSE(FALSE)
  A13单元格:=RETURN()
  (3)逐个选取工作簿中其他工作表,然后执行【插入】/【名称】/【定义】命令,打开【定义名称】对话框。在“在当前工作簿中的名称”框中输入:工作表名称+Auto_Activate。如在Sheet1工作表中打开【定义名称】对话框,定义的名称就为:Sheet1!Auto_Activate。然后在引用位置文本框中输入:=宏表1!$A$2。
  ★提示:对于一个工作表数量较多的工作表逐个设置会很麻烦。所以这时可以只需为其中一个设置名称,但要保障“当打开工作簿时,必需是设置名称的工作表处于选取状态”。另外,这种措施在Excel2003上是有效的,在2007/2010上笔者未试过。★
  五、限制工作簿的使用次数,超过次数就自我删除
  限制工作簿的使用次数,超过次数就自我删除,也不失为保护作品的一种好方法。但这种方法需要修改注册表。
  有关程序的代码如下:
Private Sub Workbook_Open()
Dim counter As Long, term As Long, chk
chk = GetSetting("hhh", "budget", "使用次数", "")
If chk = "" Then
term = 50 '限制使用50次
MsgBox "本工作簿只能使用" & term & "次" & vbCrLf & "超过次数将自动销毁!", vbExclamation
SaveSetting "hhh", "budget", "使用次数", term
Else
counter = Val(chk) - 1
MsgBox "你还能使用" & counter & "次,请及时注册!", vbExclamation
SaveSetting "hhh", "budget", "使用次数", counter
If counter <= 0 Then
DeleteSetting "hhh", "budget", "使用次数"
killme
End If
End If
End Sub

Public Sub killme()
Application.DisplayAlerts = False
ActiveWorkbook.ChangeFileAccess xlReadOnly
Kill ActiveWorkbook.FullName
ThisWorkbook.Close False
End Sub
  将上述程序复制到工作簿的ThisWorkbook对象模块中,保存文件即可。
  ★提示:使用该方法也可以限制工作簿的使用时间
 


  • 好的评价 如果您觉得此资料好,就请您
      100%(4)
  • 差的评价 如果您觉得此资料差,就请您
      0%(0)

站主其人 | 网站帮助 | 下载声明 | 网站地图 | 查分试用 | 友情链接 | 用户列表 |


  具才苑是一个主要以中小学教师、师范类学生为主要服务对象,教学资源丰富,兼顾社会关注问题的小型综合网站。具才苑是所有具才软件的首发官方网站,因此在这里下载的具才软件才是最新最可靠的。具才苑资源全部免费下载,但个别资源可能需要您先免费注册成本站用户后方可浏览或下载。