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