我花了一些时间编写一个可能对很多公司有价值的Excel宏。
如何锁定宏以防止人们看到源/转发给其他人?
由于
答案 0 :(得分:17)
当我们编写VBA代码时,通常需要使用VBA宏代码 对最终用户不可见。这是为了保护你的知识分子 属性和/或阻止用户搞乱您的代码。请注意 Excel的保护能力远远不够考虑 安全。 还有很多VBA密码恢复[工具]待售 万维网。
要保护您的代码,请打开Excel工作簿并转到 工具>宏> Visual Basic编辑器(Alt + F11)。现在,从VBE内部开始吧 到工具> VBAProject属性,然后单击保护页面选项卡 然后选中“从查看中锁定项目”,然后输入您的 密码,然后再次确认。这样做之后你必须保存, 关闭&重新打开工作簿以使保护生效。
(强调我的)
似乎是你最好的选择。它不会阻止那些决心窃取你的代码的人,但它足以阻止随意的海盗。
请记住,即使您能够分发代码的编译副本,也无法阻止人们decompiling。
答案 1 :(得分:12)
就像您可以使用密码保护工作簿和工作表一样,您可以使用密码保护Excel中的宏不被查看(和执行)。
在工作表上放置一个命令按钮,并添加以下代码行:
首先,创建一个您想要保护的简单宏。
Range("A1").Value = "This is secret code"
下一步,点击工具,然后 VBAProject属性 ...
单击工具,VBAProject属性...
输入密码两次
点击确定。
保存,关闭并重新打开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消失)。只有当用户知道密码时("轻松"再次),才会执行密码。如果输入的密码不正确,则会显示MsgBox。请注意,用户无法在Visual Basic编辑器中查看密码,因为该项目不受查看
答案 2 :(得分:9)
您可以在http://hivelink.io查看此新产品,它可以让您正确保护敏感的宏。
Excel密码系统非常弱 - 只需使用基本的HEX编辑器,您就可以在2分钟内破解它。我不建议依靠它来保护任何东西。
我在这里写了一篇关于这个主题的文章:Protecting Code in an Excel Workbook?
答案 3 :(得分:1)
答案 4 :(得分:1)
现代的方法是从VBA转移到重要代码,并使用c#或vb.net编写.NET托管外接程序,www上有很多资源,你可以使用Express版本的MS Visual Studio
答案 5 :(得分:0)
使用带有AppProtect或QuickLicense / AddLicense的OfficeProtect,从Excel电子表格生成受保护的Mac或Windows应用程序。在www.excelsoftware.com/videos上有一个名为“Protect Excel Spreedsheet”的演示视频。