2016-10-21 6 views
0

問題が残っています。ウェブサイトからダウンロードしたスプレッドシートを自動的にレポートに記入するオートメーションを作成しています。これらのシートはパスワードで保護されていますが、パスワードを入力せずにブックのロックを解除するコードを見つけましたが、Excel 2016で作業していないのですが、他の誰かが知っていますか?私は同じ問題を持っていたパスワードを知らずに保護されたブックのロックを解除する

Sub UnProtect_Excel_WorkSheet() 
    'Unlock Protect Excel Worksheet 
    Dim i1 As Integer, i2 As Integer, i3 As Integer, j1 As Integer, j2 As Integer, j3 As Integer 
    Dim k1 As Integer, k2 As Integer, k3 As Integer, l1 As Integer, l2 As Integer, l3 As Integer 
    Dim a As Double 

    On Error Resume Next 
    a = 0 
    'Try all Possible Alternate Combination Password 
    For i1 = 65 To 66: For i2 = 65 To 66: For i3 = 65 To 66 
    For j1 = 65 To 66: For j2 = 65 To 66: For j3 = 65 To 66 
    For k1 = 65 To 66: For k2 = 65 To 66: For k3 = 65 To 66 
    For l1 = 65 To 66: For l2 = 65 To 66: For l3 = 32 To 126 
     ThisWorkbook.Sheets(1).Unprotect Chr(i1) & Chr(i2) & Chr(i3) & Chr(j1) & Chr(j2) & Chr(j3) & Chr(k1) & Chr(k2) & Chr(k3) & Chr(l1) & Chr(l2) & Chr(l3) 
     a = a + 1 
     ThisWorkbook.Sheets(2).Cells(a, 1) = Chr(i1) & Chr(i2) & Chr(i3) & Chr(j1) & Chr(j2) & Chr(j3) & Chr(k1) & Chr(k2) & Chr(k3) & Chr(l1) & Chr(l2) & Chr(l3) 

     'Check if the Protection is Removed 
     If ActiveSheet.ProtectContents = False Then 
      MsgBox "One usable password is " & Chr(i1) & Chr(i2) & Chr(i3) & Chr(j1) & Chr(j2) & Chr(j3) & Chr(k1) & Chr(k2) & Chr(k3) & Chr(l1) & Chr(l2) & Chr(l3) 
      Exit Sub 
     End If 

     'Exit Loop 
    Next: Next: Next: Next: Next: Next 
    Next: Next: Next: Next: Next: Next 
End Sub 
+1

おそらくばかげています。これらのファイルをレポートとしてダウンロードする場合、アップローダにパスワードを尋ねることはできませんか?それとも、これは仕事関連のものではありませんか?また、これは2016年にエラーをスローするか、ブックのロックを解除しませんか?エラーがスローされない場合は、「On Error Resume Next」を削除(またはコメントアウト)して、それが何であるかを確認します。 – BruceWayne

+6

Excel 2013以降では、ブルートフォースの方法(あなたのコード)は機能しなくなりました。私がまだ知っている唯一の方法は、excelファイルをzipに変更し、xmlを通してパスワードを削除することです。 – rwilson

+0

@rwilson、どうやったらそれを共有するのか?私たちのチームは実際には、元の従業員がいくつかのファイルをロックしていないまま残しています。 – acousticismX

答えて

1

は、ここで私が持っているコードです。私が見つけた解決策は非常に簡単です。ドキュメントを.xlsとして保存してスクリプトを実行するだけです。

これは65K行未満の場合に有効な解決策です。

関連する問題