1. 程式人生 > >Excel2013破解vba工程密碼以及工作表保護密碼

Excel2013破解vba工程密碼以及工作表保護密碼

1.將你要破解的Excel檔案關閉,切記一定要關閉呀!然後新建一個Excel檔案:

這裡寫圖片描述

2.開啟新建的這個Excel,按下alt+F11,開啟vb介面,新建一個模組,如圖所示:

這裡寫圖片描述

3.將程式碼複製到這個模組中,程式碼如下:

Private Sub VBAPassword() '你要解保護的Excel檔案路徑
Filename = Application.GetOpenFilename("Excel檔案(*.xls & *.xla & *.xlt),*.xls;*.xla;*.xlt", , "VBA破解")
If Dir(Filename) = "" Then
MsgBox "沒找到相關檔案,清重新設定。"
Exit Sub Else FileCopy Filename, Filename & ".bak" '備份檔案。 End If Dim GetData As String * 5 Open Filename For Binary As #1 Dim CMGs As Long Dim DPBo As Long For i = 1 To LOF(1) Get #1, i, GetData If GetData = "CMG=""" Then CMGs = i If GetData = "[Host" Then DPBo = i - 2: Exit For Next If CMGs = 0
Then MsgBox "請先對VBA編碼設定一個保護密碼...", 32, "提示" Exit Sub End If Dim St As String * 2 Dim s20 As String * 1 '取得一個0D0A十六進位制字串 Get #1, CMGs - 2, St '取得一個20十六制字串 Get #1, DPBo + 16, s20 '替換加密部份機碼 For i = CMGs To DPBo Step 2 Put #1, i, St Next '加入不配對符號 If (DPBo - CMGs) Mod 2 <> 0 Then Put #1, DPBo + 1, s20 End
If MsgBox "檔案解密成功......", 32, "提示" Close #1 End Sub

這裡寫圖片描述

4.然後點選執行按鈕,如圖所示,綠色的小三角就是:

這裡寫圖片描述

5.你會看到,打開了一個資料夾,找到我們要破解的這個檔案,然後點選開啟:

這裡寫圖片描述

6.稍等幾分鐘你就會看到破解成功的提示了:

這裡寫圖片描述

7.再次開啟你要破解的這個檔案,你會看到這裡已經可以檢視程式碼了:

這裡寫圖片描述

1.點選檔案-選項-自定義功能區,找到“開發工具”勾選並確定:

這裡寫圖片描述

2.進去找到“錄製巨集”,把它建立在“個人巨集工作簿”:

這裡寫圖片描述

3.建立好後什麼都不用動,直接“停止錄製”,然後點選“Visual Basic”:

這裡寫圖片描述
這裡寫圖片描述

4.在左邊導航欄找到“模組一”,並雙擊開啟:

這裡寫圖片描述

5.刪掉裡面所有內容,把破解程式碼替換進去,並儲存(切記):

Public Sub 工作表保護密碼破解()
Const DBLSPACE As String = vbNewLine & vbNewLine
Const AUTHORS As String = DBLSPACE & vbNewLine & _
"作者:McCormick   JE McGimpsey "
Const HEADER As String = "工作表保護密碼破解"
Const VERSION As String = DBLSPACE & "版本 Version 1.1.1"
Const REPBACK As String = DBLSPACE & ""
Const ZHENGLI As String = DBLSPACE & "                        FGHRSH 整理"
Const ALLCLEAR As String = DBLSPACE & "該工作簿中的工作表密碼保護已全部解除!!" & DBLSPACE & "請記得另儲存" _
& DBLSPACE & "注意:不要用在不當地方,要尊重他人的勞動成果!"
Const MSGNOPWORDS1 As String = "該檔案工作表中沒有加密"
Const MSGNOPWORDS2 As String = "該檔案工作表中沒有加密2"
Const MSGTAKETIME As String = "解密需花費一定時間,請耐心等候!" & DBLSPACE & "按確定開始破解!"
Const MSGPWORDFOUND1 As String = "密碼重新組合為:" & DBLSPACE & "$$" & DBLSPACE & _
"如果該檔案工作表有不同密碼,將搜尋下一組密碼並修改清除"
Const MSGPWORDFOUND2 As String = "密碼重新組合為:" & DBLSPACE & "$$" & DBLSPACE & _
"如果該檔案工作表有不同密碼,將搜尋下一組密碼並解除"
Const MSGONLYONE As String = "確保為唯一的?"
Dim w1 As Worksheet, w2 As Worksheet
Dim i As Integer, j As Integer, k As Integer, l As Integer
Dim m As Integer, n As Integer, i1 As Integer, i2 As Integer
Dim i3 As Integer, i4 As Integer, i5 As Integer, i6 As Integer
Dim PWord1 As String
Dim ShTag As Boolean, WinTag As Boolean
Application.ScreenUpdating = False
With ActiveWorkbook
WinTag = .ProtectStructure Or .ProtectWindows
End With
ShTag = False
For Each w1 In Worksheets
ShTag = ShTag Or w1.ProtectContents
Next w1
If Not ShTag And Not WinTag Then
MsgBox MSGNOPWORDS1, vbInformation, HEADER
Exit Sub
End If
MsgBox MSGTAKETIME, vbInformation, HEADER
If Not WinTag Then
Else
On Error Resume Next
Do 'dummy do loop
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
With ActiveWorkbook
.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 .ProtectStructure = False And _
.ProtectWindows = False Then
PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
MsgBox Application.Substitute(MSGPWORDFOUND1, _
"$$", PWord1), vbInformation, HEADER
Exit Do 'Bypass all for...nexts
End If
End With
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
Loop Until True
On Error GoTo 0
End If
If WinTag And Not ShTag Then
MsgBox MSGONLYONE, vbInformation, HEADER
Exit Sub
End If
On Error Resume Next
For Each w1 In Worksheets
'Attempt clearance with PWord1
w1.Unprotect PWord1
Next w1
On Error GoTo 0
ShTag = False
For Each w1 In Worksheets
'Checks for all clear ShTag triggered to 1 if not.
ShTag = ShTag Or w1.ProtectContents
Next w1
If ShTag Then
For Each w1 In Worksheets
With w1
If .ProtectContents Then
On Error Resume Next
Do 'Dummy do loop
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
.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 Not .ProtectContents Then
PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
MsgBox Application.Substitute(MSGPWORDFOUND2, _
"$$", PWord1), vbInformation, HEADER
'leverage finding Pword by trying on other sheets
For Each w2 In Worksheets
w2.Unprotect PWord1
Next w2
Exit Do 'Bypass all for...nexts
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
Loop Until True
On Error GoTo 0
End If
End With
Next w1
End If
MsgBox ALLCLEAR & AUTHORS & VERSION & REPBACK & ZHENGLI, vbInformation, HEADER
End Sub

這裡寫圖片描述

6.關掉剛剛的“Visual Basic”視窗,點選“巨集”:

這裡寫圖片描述

7.點選剛剛匯入的破解巨集,並執行(打開了多個工作簿可在位置選擇需要的):

這裡寫圖片描述

8.開始破解,“確定”

這裡寫圖片描述

9.至此,密碼已經全部破解完成

這裡寫圖片描述
這裡寫圖片描述