暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

用密码保护代码不被非法执行

VBA语言専攻 2022-08-24
70
【分享成果,随喜正能量】 很认同莫泊桑的一段话:“人如果能坚定自己内心所想,不攀比,不盲从,不被他人影响,一门心思过好自己的日子,就会快乐许多。”。
《VBA之Excel应用》是非常经典的,是我推出的第七套教程,定位于初级。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非常容易的掌握相关的知识,这套教程共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。今日讲解的内容是“VBA之EXCEL应用”: 用密码保护代码不被非法执行

第八节 如何保护自己的VBA代码

大家好,我们继续VBA的学习,这讲我们讲解如何保护自己的VBA代码,虽然保护措施只是相对的,但我们也有必要了解好掌握一些这方面的知识,以便可以让我们的代码不被查看和执行。

1  锁定代码不被查看

为了让代码不被他人查看,我们可以锁定工程:
1)在VBE窗口,我们点击“工具”,“VBAProject属性”:
2)在弹出的对话框中选择“保护”,勾选“查看时锁定工程”全的复选框,在“查看工程属性的密码”中输入自己的密码,最后点击“确定”。
我们保存一下文件后关闭,再次打开,进入VBE窗口:
如果我们想查看代码,就要录入密码了,如下的界面:
只有我们录入了正确的密码才能看到工程中的代码。

2  用密码保护代码不被非法执行

上面的方案只是保证了代码不被查看(除非您知道密码),仍然可以通过单击运行按钮来执行代码。那么如何保护代码不被非法地执行呢?我们可以通过下面的方案:
在我们运行的过程前加入密码校验,如果密码不对则程序不被执行,如下面的过程:
Sub mynzE()
    '密码校验部分
    Dim password As Variant
    password = Application.InputBox("请输入程序运行密码", "Password Protected")
    Select Case password
    Case Is = False
        'do nothing
        Exit Sub
    Case Is = "CP1972"
        MsgBox "密码正确,可以运行程序!"
    Case Else
        MsgBox "密码错误,不可以非法运行程序!"
        Exit Sub
    End Select
    '进入程序的主体部分
    Range("b5") = 0
    For i = 1 To 1000
        Range("b5") = Range("b5") + i
    Next
    MsgBox "ok!"
End Sub

代码截图:
代码解读:
1)上面的代码分为两部分,一部分是密码校验,一部分是程序的主体,我们这讲主要讲解密码校验部分。
2) Dim password As Variant
    password = Application.InputBox("请输入程序运行密码", "Password Protected")
以上代码是首选声明一个变量 passwordVariant类型的数据变量。Variant类型的数据是变体型,这在以后还会讲解到。
 然后会利用一个InputBox对话框让用户录入密码。
3)在校验用户录入的密码时用了一个Select Case….End Select 的语句,这个语句中会列举到用户录入的各种情况。
  没有录入,直接取消时
Case Is = False
        'do nothing
        Exit Sub
      直接退出程序Exit Sub

l宏使用Application对象的InputBox方法。如果用户单击取消(Cancel,这个方法返回False,并且什么也不发生(InputBox消失)。

  录入正确
Case Is = "CP1972"
        MsgBox "密码正确,可以运行程序!"
     当密码正确,弹出一个对话框"密码正确,可以运行程序!"
  其他情况:
Case Else
        MsgBox "密码错误,不可以非法运行程序!"
        Exit Sub
    当密码不正确,弹出一个对话框"密码错误,不可以非法运行程序!"然后退出程序。
4)由于代码是按顺序执行的,在上述代码执行过程中,如果没有Exit Sub(退出程序),那么说明密码校验是正确的,代码将继续执行,开始程序主体部分代码的运行。

下面我们来看一下代码的执行效果,我们仍旧建立一个运行按钮,关联上述过程,点击运行:

如果代码错误:
密码正确:
程序运行结果:

今日内容回向:
   1) 如何保护代码不被查看?
   2) 如何保护代码不被运行?
   3)   如果只是保护代码不被运行,没有保护代码不被查看,有何不妥?


本讲内容参考程序文件:工作簿01.xlsm
   
 
我20多年的VBA成果全在下面的资料中:
【分享成果,随喜正能量】人生最大的失败是骄傲自大,人生最大的无知是欺骗,人生最大的悲哀是嫉妒。
文章转载自VBA语言専攻,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论