【发布时间】:2018-03-12 13:42:41
【问题描述】:
以下代码由this website 提供,我用它来取消保护我不知道密码的工作表。
Sub DisableSheetProtection()
Dim password As String
On Error Resume Next
For i = 65 To 66: For j = 65 To 66
For k = 65 To 66: For l = 65 To 66
For m = 65 To 66: For n = 65 To 66
For o = 65 To 66: For p = 65 To 66
For q = 65 To 66: For r = 65 To 66
For S = 65 To 66: For t = 32 To 126
ActiveSheet.Unprotect Chr(i) & _
Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(n) & Chr(o) & _
Chr(p) & Chr(q) & Chr(r) & _
Chr(S) & Chr(t)
Next t: Next S: Next r: Next q
Next p: Next o: Next n: Next m
Next l: Next k: Next j: Next i
MsgBox "Sheet protection disabled."
End Sub
问题是:它是如何或为什么起作用的? Chr(65) 是 A,Chr(66) 是 B,Chr(32) 到 Chr(126) 是整个字母表和特殊的字符。
基本上,如果您想尝试所有可能需要这样做:
Sub DisableSheetProtection()
Dim password As String
On Error Resume Next
For i = 32 To 126: For j = 32 To 126
For k = 32 To 126: For l = 32 To 126
For m = 32 To 126: For n = 32 To 126
For o = 32 To 126: For p = 32 To 126
For q = 32 To 126: For r = 32 To 126
For S = 32 To 126: For t = 32 To 126
ActiveSheet.Unprotect Chr(i) & _
Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(n) & Chr(o) & _
Chr(p) & Chr(q) & Chr(r) & _
Chr(S) & Chr(t)
Next t: Next S: Next r: Next q
Next p: Next o: Next n: Next m
Next l: Next k: Next j: Next i
MsgBox "Sheet protection disabled."
End Sub
但是该代码可以正常工作,因为它可以取消保护并且您无法打印出正确的密码。我认为这与 VBA 取消保护/保护方法有关。
【问题讨论】:
标签: vba excel passwords excel-2007 password-protection