我花了一些时间编写了一个可能对很多公司有商业价值的Excel宏。
我该如何锁定这个宏,以防止人们查看源代码/将其转发给其他人?
谢谢
当我们编写VBA代码时,通常希望将VBA宏代码对最终用户隐藏。这是为了保护您的知识产权和/或防止用户搞乱您的代码。只需注意,Excel的保护能力远不能被认为是安全的。 还有许多出售VBA密码恢复工具的网站存在。
为了保护您的代码,请打开Excel工作簿,然后转到“工具”>“宏”>“Visual Basic编辑器”(Alt + F11)。现在,从VBE中转到“工具”>“VBA项目属性”,然后单击“保护”选项卡,然后勾选“锁定项目以防查看”,接着输入密码并再次确认密码。完成此操作后,您必须保存、关闭并重新打开工作簿,才能使保护生效。
(Emphasis mine)
看起来这是最佳选择。它无法阻止那些决心窃取您代码的人,但足以阻止一般盗版行为。
请记住,即使您能够分发编译后的代码副本,也无法阻止人们反编译它。
输入两次密码
点击确定。
保存,关闭并重新打开Excel文件。尝试查看代码。
密码保护,无法查看
您仍然可以通过单击命令按钮来执行代码,但是您不能再查看或编辑代码(除非您知道密码)。可下载的Excel文件的密码为“easy”。
在工作表上单击命令按钮后的结果:Dim password As Variant password = Application.InputBox("Enter Password", "Password Protected") Select Case password Case Is = False 'do nothing Case Is = "easy" Range("A1").Value = "This is secret code" Case Else MsgBox "Incorrect Password" End Select
密码保护不被执行
说明:此宏使用Application对象的InputBox方法。如果用户单击取消,则该方法返回False并且什么也不会发生(InputBox消失)。只有当用户知道密码(再次是“easy”)时,才会执行秘密代码。如果输入的密码不正确,则显示一个MsgBox。请注意,用户无法在Visual Basic编辑器中查看密码,因为该项目受到保护以防止被查看。
Excel密码系统极其薄弱 - 只需要使用基本的HEX编辑器即可在2分钟内破解。我不建议仅凭此来保护任何内容。
我在这个主题上写了一篇广泛的帖子:如何保护Excel工作簿中的代码?