【问题标题】:Lock down Microsoft Excel macro锁定 Microsoft Excel 宏
【发布时间】:2016-09-10 03:51:56
【问题描述】:

我花了一些时间编写一个 Excel 宏,它可能对很多公司都物有所值。

如何锁定宏以防止人们看到源/转发给其他人?

谢谢

【问题讨论】:

    标签: excel vba security


    【解决方案1】:

    Protect/Lock Excel VBA Code:

    当我们编写 VBA 代码时,通常希望有 VBA 宏代码 对最终用户不可见。这是为了保护你的知识分子 财产和/或阻止用户弄乱您的代码。请注意 Excel的防护能力远非想象中的那么好 安全的。 还有很多 VBA 密码恢复 [工具] 出售 万维网。

    要保护您的代码,请打开 Excel 工作簿并转到 工具>宏>Visual Basic 编辑器 (Alt+F11)。现在,从 VBE 内部去 到工具>VBAProject 属性,然后单击保护页面选项卡 然后选中“锁定项目以防查看”,然后输入您的 密码并再次确认。完成此操作后,您必须保存, 关闭并重新打开工作簿以使保护生效。

    (强调我的)

    似乎是您最好的选择。它不会阻止那些决心窃取您的代码的人,但足以阻止临时盗版。

    请记住,即使您能够分发您的代码的编译副本,也没有什么可以阻止人们decompiling 它。

    【讨论】:

      【解决方案2】:

      就像您可以用密码保护工作簿和工作表一样,您可以用密码保护 Excel 中的宏不被查看(和执行)。

      在您的工作表上放置一个命令按钮并添加以下代码行:

      1. 首先,创建一个您想要保护的简单宏。

        Range("A1").Value = "This is secret code"

      2. 下一步,点击工具,然后点击VBAProject Properties...

      单击工具、VBAProject 属性...

      1. 保护标签上,勾选“锁定项目以供查看”并输入两次密码。

      两次输入密码

      1. 点击确定

      2. 保存关闭并重新打开 Excel 文件。尝试查看代码。

      会出现如下对话框:

      密码保护不被查看

      您仍然可以通过单击命令按钮来执行代码,但您不能再查看或编辑代码(除非您知道密码)。可下载 Excel 文件的密码是“easy”。

      1. 如果你想用密码保护宏不被执行,添加以下代码行:
      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 编辑器中查看密码,因为该项目受到保护,无法查看

      【讨论】:

        【解决方案3】:

        您可以在http://hivelink.io 查看这款新产品,它可以让您妥善保护敏感的宏。

        Excel 密码系统非常薄弱 - 只需使用基本的 HEX 编辑器即可在 2 分钟内破解。我不建议依靠它来保护任何东西。

        我在这里写了一篇关于这个主题的文章:Protecting Code in an Excel Workbook?

        【讨论】:

          【解决方案4】:

          您可以set a password 到您的 vba 代码,但这可以相当轻松分解。

          您也可以创建一个插件并将其编译成一个DLL。有关更多信息,请参阅here。这至少是保护代码最安全的方式。

          问候,

          【讨论】:

            【解决方案5】:

            现代方法是从 VBA 转移重要代码,并使用 c# 或 vb.net 编写一个 .NET 托管的加载项,www 上有很多资源,您可以使用 Express MS Visual Studio 版本

            【讨论】:

            • .NET 代码不会编译成机器码,很容易进行逆向工程。使用 C API 会更好。
            【解决方案6】:

            使用带有 AppProtect 或 QuickLicense/AddLicense 的 OfficeProtect 从 Excel 电子表格生成受保护的 Mac 或 Windows 应用程序。 www.excelsoftware.com/videos 上有一个名为“Protect Excel Spreedsheet”的演示视频。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2017-07-10
              • 1970-01-01
              • 1970-01-01
              • 2015-05-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多