问与答121:如何让用户输入密码后才能使用Excel文件?
excelperfect
Q:有没有一种方法可以通过给用户提供密码来许可用户使用Excel文件?例如,在没有到规定的日期之前,可以正常使用,超过规定日期,则需要输入密码,如果密码不正确,将删除Excel文件。
A:可以在工作簿的Open事件中编写代码来实现,如下:
Public MyDate As Variant
Private Sub WorkBook_Open()
Dim mbox
MyDate = #3/22/2021#
Application.ScreenUpdating = False
Sheets('Intro').Visible = True
Sheets('Clock').Visible =xlVeryHidden
Application.ScreenUpdating = True
If Date > MyDate Then
MsgBox '糟糕!本程序的测试/评估期已到期.' &vbCrLf & _
'请询问相关人员获取更新的实用程序.', vbCritical, '过期/超期版本'
mbox = Application.InputBox('请输入密码/代码继续...','密码')
If mbox <> 'ABCD' Then
MsgBox '不正确的密码' &vbCrLf & _
'请询问相关人员获取正确的密码.',vbCritical, '密码错误'
Application.Quit
With ThisWorkbook
.Save
.ChangeFileAccessMode:=xlReadOnly
Kill .FullName
.Close SaveChanges:=False
End With
Else
Sheets('Clock').Visible =True
Sheets('Intro').Visible =False
End If
End If
End Sub
这里存在一个Bug,就是用户不启用宏时,可以查看到代码,并知道密码。我们可以在工作簿打开时强制用户启用宏。具体方法参见:《问与答10:如何强制用户启用宏?》。
注:今天的问题来自于chandoo.org论坛,供有兴趣的朋友学习参考。