Wow! It’s been so long since I’ve written anything here. 1 year and 4 days to be exact! You know, I wanted this blog to be link my code repository as well… but as the tasks become more complex, writing about them and explaining how they have been solved are getting harder and harder.
But this one I had to save here, since it took me couple of hours to find. I have to emphasize that I didn’t write any of the code myself so here is the original post... You know, credit where it’s due!
So, Here is the problem I had this morning: An old MS Excel spreadsheet that with a protected workbook and I had forgotten the password. I’m sure you have been in that situation before. So I started searching for ways to crack it and I found a bunch of applications (Free!!!) that does it for you. But since I don’t want to just install any application I find off the web on my personal PC, I kept looking and found the following VB script that works like a charm. Here is how to use it:
Open the workbook that has the protected sheet in it. Hit Alt+F11 to view the Visual Basic Editor. Hit Insert-Module and paste this code into the right-hand code window:
Sub PasswordBreaker() 'Author unknown but submitted by brettdj of www.experts-exchange.com 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) ActiveWorkbook.Sheets(1).Select Range("a1").FormulaR1C1 = 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
Close the VB Editor window. Navigate to the worksheet you want to unprotect. Hit Tools-Macro-Macros and double-click PasswordBreaker in the list