使用VBA在内部为我的工作簿添加安全性

时间:2015-12-09 10:38:32

标签: excel vba excel-vba

出于测试目的,我们假设解锁工作簿的代码是1。 我希望打开时显示一个输入框,如果用户输入的代码不正确/或者在输入框中选择取消,则工作簿将关闭。

Private Sub Workbook_Open()

ActiveSheet.Range("A1").Activate

 Code = Application.InputBox("Enter School Code", CancelCode)

    If Code < 0 > 1 Or False Then
    Code = Int(1)
        MsgBox ("Unrecognised Code")

Application.Workbooks("CODING.xlsm").Close 'False

    End If

End Sub

此时它会出现,但如果输入了任何数字则会运行,并且还会关闭输入框并在单击取消时允许访问。

1 个答案:

答案 0 :(得分:2)

试试这个:

Private Sub Workbook_Open()
    Dim Code As Variant
    Code = Application.InputBox("Enter School Code", CancelCode)
    If Not Code = 1 Then
        MsgBox ("Unrecognised Code")
        ThisWorkbook.Close SaveChanges:=False
    End If
End Sub

刚试过它,它对我有用。

但是,我应该补充一点,这是极低级别的安全性,任何对VBA有基本了解的人都可以绕过这种安全性。您只需在打开工作簿之前在另一个工作簿(或在VBA立即窗口中)中设置 Application.EnableEvents = False ,并且Workbook_Open事件根本不会运行。