锁定Microsoft Excel宏

时间:2011-07-20 11:11:14

标签: excel vba security

我花了一些时间编写一个可能对很多公司有价值的Excel宏。

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

由于

6 个答案:

答案 0 :(得分:17)

Protect/Lock Excel VBA Code

  

当我们编写VBA代码时,通常需要使用VBA宏代码   对最终用户不可见。这是为了保护你的知识分子   属性和/或阻止用户搞乱您的代码。请注意   Excel的保护能力远远不够考虑   安全。 还有很多VBA密码恢复[工具]待售   万维网。

     

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

(强调我的)

似乎是你最好的选择。它不会阻止那些决心窃取你的代码的人,但它足以阻止随意的海盗。

请记住,即使您能够分发代码的编译副本,也无法阻止人们decompiling

答案 1 :(得分:12)

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

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

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

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

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

  3. enter image description here

    单击工具,VBAProject属性...

    1. 保护标签上,选中" 锁定项目以供查看"并输入两次密码。
    2. enter image description here

      输入密码两次

      1. 点击确定

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

      3. enter image description here

        将出现以下对话框:

        密码不受保护

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

        1. 如果要密码保护宏不被执行,请添加以下代码行:
        2. 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
          

          单击工作表上的命令按钮时的结果:

          enter image description here

          密码不受执行

          解释:宏使用Application对象的InputBox方法。如果用户单击“取消”,则此方法返回False,并且没有任何反应(InputBox消失)。只有当用户知道密码时("轻松"再次),才会执行密码。如果输入的密码不正确,则会显示MsgBox。请注意,用户无法在Visual Basic编辑器中查看密码,因为该项目不受查看

答案 2 :(得分:9)

您可以在http://hivelink.io查看此新产品,它可以让您正确保护敏感的宏。

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

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

答案 3 :(得分:1)

您可以set a password添加到您的vba代码,但这可能相当很容易被分解。

您还可以创建插件并将其编译为 DLL 。有关详细信息,请参阅here。这至少是保护代码最安全的方式。

此致

答案 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”的演示视频。