1、EXCEL工作表和VBA密码去除法EXCEL工作表和VBA密码去除法一、工作表密码破解Public Sub 工作表保护密码破解()Const DBLSPACE As String = vbNewLine & vbNewLineConst AUTHORS As String = DBLSPACE & vbNewLine & _作者:Neyo Const HEADER As String = 工作表保护密码破解Const VERSION As String = DBLSPACE & 版本 Version 1.1.1Const REPBACK As String = DBLSPACE & Const
2、 ZHENGLI As String = DBLSPACE & Neyo 整理Const ALLCLEAR As String = DBLSPACE & 该工作簿中的工作表密码保护已全部解除! & DBLSPACE & 请记得另保存 _& DBLSPACE & 注意:不要用在不当地方,要尊重他人的劳动成果!Const MSGNOPWORDS1 As String = 该文件工作表中没有加密Const MSGNOPWORDS2 As String = 该文件工作表中没有加密2Const MSGTAKETIME As String = 解密需花费一定时间,请耐心等候! & DBLSPACE & 按
3、确定开始破解!Const MSGPWORDFOUND1 As String = 密码重新组合为: & DBLSPACE & $ & DBLSPACE & _如果该文件工作表有不同密码,将搜索下一组密码并修改清除Const MSGPWORDFOUND2 As String = 密码重新组合为: & DBLSPACE & $ & DBLSPACE & _如果该文件工作表有不同密码,将搜索下一组密码并解除Const MSGONLYONE As String = 确保为唯一的?Dim w1 As Worksheet, w2 As WorksheetDim i As Integer, j As Inte
4、ger, k As Integer, l As IntegerDim m As Integer, n As Integer, i1 As Integer, i2 As IntegerDim i3 As Integer, i4 As Integer, i5 As Integer, i6 As IntegerDim PWord1 As StringDim ShTag As Boolean, WinTag As BooleanApplication.ScreenUpdating = FalseWith ActiveWorkbookWinTag = .ProtectStructure Or .Prot
5、ectWindowsEnd WithShTag = FalseFor Each w1 In WorksheetsShTag = ShTag Or w1.ProtectContentsNext w1If Not ShTag And Not WinTag ThenMsgBox MSGNOPWORDS1, vbInformation, HEADERExit SubEnd IfMsgBox MSGTAKETIME, vbInformation, HEADERIf Not WinTag ThenElseOn Error Resume NextDo dummy do loopFor i = 65 To 6
6、6: For j = 65 To 66: For k = 65 To 66For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126With ActiveWorkbook.Unprotect Chr(i) & Chr(j) & Chr(k) & _Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _Chr
7、(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)If .ProtectStructure = False And _.ProtectWindows = False ThenPWord1 = 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,
8、 HEADERExit Do Bypass all for.nextsEnd IfEnd WithNext: Next: Next: Next: Next: NextNext: Next: Next: Next: Next: NextLoop Until TrueOn Error GoTo 0End IfIf WinTag And Not ShTag ThenMsgBox MSGONLYONE, vbInformation, HEADERExit SubEnd IfOn Error Resume NextFor Each w1 In WorksheetsAttempt clearance wi
9、th PWord1w1.Unprotect PWord1Next w1On Error GoTo 0ShTag = FalseFor Each w1 In WorksheetsChecks for all clear ShTag triggered to 1 if not.ShTag = ShTag Or w1.ProtectContentsNext w1If ShTag ThenFor Each w1 In WorksheetsWith w1If .ProtectContents ThenOn Error Resume NextDo Dummy do loopFor i = 65 To 66
10、: For j = 65 To 66: For k = 65 To 66For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66For 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
11、(i5) & Chr(i6) & Chr(n)If Not .ProtectContents ThenPWord1 = 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, HEADERleverage finding Pword by trying on other sheet
12、sFor Each w2 In Worksheetsw2.Unprotect PWord1Next w2Exit Do Bypass all for.nextsEnd IfNext: Next: Next: Next: Next: NextNext: Next: Next: Next: Next: NextLoop Until TrueOn Error GoTo 0End IfEnd WithNext w1End IfMsgBox ALLCLEAR & AUTHORS & VERSION & REPBACK & ZHENGLI, vbInformation, HEADEREnd Sub二、VB
13、A密码破解for Excel2003在空白excel文档vba里面插入模块,运行此模块Option Explicit Const LANG_ENGLISH As Integer = 9 Type CommandLineInfo Name As String Value As String StartPos As LongEnd Type Sub main() Dim fName As String fName = Application.GetOpenFilename(Excel文件(xls ; xla),*.xls;*.xla, , 选择要破解的EXCEL2003包含VBA密码的文件) If
14、 fName = False Then Exit Sub Dim fNewName As String fNewName = MoveProtect(fName) If Len(fNewName) Then If MsgBox(转换完成,另存为: & vbLf & fNewName & vbLf & 要打开吗?, vbQuestion + vbYesNo, 完成) = vbYes Then Workbooks.Open fNewName Else MsgBox 未发现VBAProject有密码特征字符串, vbInformation, 提示 End IfEnd Sub Private Func
15、tion MoveProtect(fName As String) As String Dim myExcelFileData As String Dim myCommandLinesInfo() As CommandLineInfo myExcelFileData = GetFileData(fName) If SearchSpecificCommandInfo(myExcelFileData, myCommandLinesInfo) Then MoveProtect = Write2File(Left(fName, Len(fName) - 4) & _覆盖VBA密码.xls, CoverData(myExcelFileData, myCommandLinesInfo) End IfEnd Function Private Function GetFileData(fName As String) As String
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1