我密码保护了工作表,我想在打开时验证用户以后没有更改过密码。
我已经尝试在密码更改的工作表上通过VBA再次设置密码,以查看是否会出错但是没有提供错误。
以下代码是我目前用于测试它的代码并且它可以工作,但我认为您不应该取消保护工作表然后保护它以验证密码。
Sub CheckSheetPassword()
Dim ws As Worksheet
On Error Resume Next
For Each ws In Worksheets
ws.Unprotect Password:="Password"
ws.Protect Password:="Password"
If Err <> 0 Then
MsgBox "Failed To Verify Password on: " & ws.Name
Err = 0
End If
Next ws
End Sub
我的代码说明:
上面的代码循环遍历工作簿中的所有工作表,并通过使用原始密码取消保护当前工作表来检查工作表保护密码是否已更改。
然后使用原始密码保护工作表,以防止其保持不受保护。 (如果当前密码与原始密码不同,则不会抛出任何错误,此步骤也不会发生任何错误。)
如果代码无法取消保护工作表,那么它将抛出错误并显示一个消息框,让我知道该工作表上的密码已被更改。
在评估下一个工作表之前,我将错误计数重置为零,以确定哪些工作表仍具有正确的密码。
我要问的是,这可以在不必取消保护表单的情况下完成吗?
答案 0 :(得分:1)
使用密码取消保护工作表后您可以验证工作表是否受保护。
以下是完整的代码:
Sub CheckSheetPassword()
Dim ws As Worksheet
On Error Resume Next
For Each ws In Worksheets
ws.Unprotect Password:="Password"
If ws.ProtectContents = False Then
' The sheet is unprotected, so password hasn't changed
Else
' The sheet is protected, so password has changed
MsgBox "Failed To Verify Password on: " & ws.Name
End If
Next ws
End Sub
答案 1 :(得分:0)
在评论中回答了这个问题,说明我提出的方式是正确的。