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

我已经把这个代码放到了一个工作表中,这个工作表应该确保每个工作表都被他们的个人密码保护着。 它似乎工作正常,但我试图访问工作表,他们都说不正确的密码?

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 

问题出在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