如何使用VBA自动保护Excel中的各个工作表?

时间:2017-10-23 05:03:30

标签: excel vba

我已将此代码放入工作表中,该工作表应确保使用各自的密码保护各个工作表。它似乎工作正常,但我试图访问工作表,所有人都说不正确的密码?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With ThisWorkbook
        .Worksheets("2073 NSW").Protect Password = "2073"
        .Worksheets("2091 NSW").Protect Password = "2091"
        .Worksheets("3105 VIC").Protect Password = "3105"
        .Worksheets("3091 VIC").Protect Password = "3091"
        .Worksheets("4058 QLD").Protect Password = "4058"
        .Worksheets("4091 QLD").Protect Password = "4091"
        .Worksheets("6024 WA").Protect Password = "6024"
        .Worksheets("6091 WA").Protect Password = "6091"
    End With
    Application.EnableAnimations = False
    ThisWorkbook.Save
    Application.EnableEvents = True
End Sub

1 个答案:

答案 0 :(得分:1)

问题出在With ThisWorkbook行内。它应该是Password:="2073"而不是Password = "2073"
您忘记使用用于为某个命名参数赋值的:=

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With ThisWorkbook
        .Sheets("2073 NSW").Protect Password:="2073"
        .Sheets("2091 NSW").Protect Password:="2091"
        .Sheets("3105 VIC").Protect Password:="3105"
        .Sheets("3091 VIC").Protect Password:="3091"
        .Sheets("4058 QLD").Protect Password:="4058"
        .Sheets("4091 QLD").Protect Password:="4091"
        .Sheets("6024 WA").Protect Password:="6024"
        .Sheets("6091 WA").Protect Password:="6091"
    End With
    Application.EnableAnimations = False
    ThisWorkbook.Save
    Application.EnableEvents = True
End Sub