2015-10-06 6 views
5

ワークシートの保護を解除するための一般的なVBAコードがありますが、ワークブックが保護されているという問題に取り組んでいます。パスワードなしのワークブックを保護しない

Sub PasswordBreaker() 
'Breaks worksheet password protection. 

    Dim i As Integer, j As Integer, k As Integer 
    Dim l As Integer, m As Integer, n As Integer 
    Dim i1 As Integer, i2 As Integer, i3 As Integer 
    Dim i4 As Integer, i5 As Integer, i6 As Integer 
    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 i1 = 65 To 66 
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66 
    For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126 
    ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _ 
     Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _ 
     Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) 
    If ActiveSheet.ProtectContents = False Then 
     MsgBox "One usable password is " & Chr(i) & Chr(j) & _ 
      Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _ 
      Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) 
     Exit Sub 
    End If 
    Next: Next: Next: Next: Next: Next 
    Next: Next: Next: Next: Next: Next 
End Sub 
+0

VBAコードを追加してください。 – Abhishek

+0

新しい保護は、簡単に削除できない暗号化に基づいています。 –

答えて

18

ブックをアンプロテクトするには、次のコードを試してください。それは私のためにエクセル2010でうまく動作しますが、私はそれはもはやエクセル2013以降でを保護されたスプレッドシートのために働く2013年

Sub PasswordBreaker() 
    'Breaks worksheet password protection. 
    Dim i As Integer, j As Integer, k As Integer 
    Dim l As Integer, m As Integer, n As Integer 
    Dim i1 As Integer, i2 As Integer, i3 As Integer 
    Dim i4 As Integer, i5 As Integer, i6 As Integer 
    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 i1 = 65 To 66 
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66 
    For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126 
    ThisWorkbook.Unprotect Chr(i) & Chr(j) & Chr(k) & _ 
     Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _ 
     Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) 
    If ThisWorkbook.ProtectStructure = False Then 
     MsgBox "One usable password is " & Chr(i) & Chr(j) & _ 
      Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _ 
      Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) 
     Exit Sub 
    End If 
    Next: Next: Next: Next: Next: Next 
    Next: Next: Next: Next: Next: Next 
End Sub 
+1

誰かが2つのhttps://gist.github.com/tobya/e144806a4e3974ec4852/revisions –

+2

の間で変更された内容に興味がある場合これが動作します - 受け入れるべきです回答 –

+0

これはまだ2016年にも機能しますか?私は、パスワードを要求するワークシート1枚でExcelファイルを持っていますが、キャンセルをクリックするとすべての... – user2060451

1

に動作しません場合はわからない - 彼らはPWハッシュを改善しました。それでは、.xlsxを解凍して内部をハックする必要があります。