2016-10-21 63 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及之後開始,bruteforce方式(您的代碼)不再有效。我知道的唯一方法仍然存在,就是將excel文件更改爲zip並通過xml刪除密碼。 – rwilson

+0

@rwilson,介意分享如何做到這一點?我們的團隊實際上有幾個文件被一位前員工鎖定,他們沒有分享pw ... – acousticismX

回答

1

我有同樣的問題。我找到的解決方案非常簡單 - 只需將文檔保存爲.xls並運行腳本即可。

如果行數少於65K,這是一個可行的解決方案。

相關問題