-
1、新建一个EXCEL文件“BOOK1”,在工具栏空白位置,任意右击,选择VisualBasic项,弹出VisualBasic工具栏:
-
2
2、在VisualBasic工具栏中,点击“录制”按钮,弹出“录制新宏”对话框,选择“个人宏工作簿”:
-
3、选择“个人宏工作簿”后按确定,弹出如下“暂停”按钮,点击停止:
-
4、在VisualBasic工具栏中,点击“编辑”按钮:
-
5、点击“编辑”按钮后,弹出如下图的编辑界面:
找到“VBAProject(PERSONAL.XLS)-模块-模块1(也可能是模块N-其他数字)”
双击模块1-将右边代码内容清空 -
6、复制“工作保护密码破解”代码到右边框中,点保存,然后关闭“BOOK1”
-
7、运行需要解密的“EXCEL文件”,在VisualBasic工具栏中,点击“运行”按钮
-
8、点击“运行”按钮后,弹出“宏”对话框,
点击运行“PERSONAL.XLS!工作保护密码破解”这个宏 -
9、运行“PERSONAL.XLS!工作保护密码破解”这个宏后,
如下图示意就可以解除工作表的密码保护了 -
(这个图,如果工作表中有多组不同密码,
每解开一组,就会提示一次,也就说可能会出现几次) -
工作表保护密码破解(代码)
=========请复制以下内容=============
PublicSub工作表保护密码破解()
ConstDBLSPACEAsString=vbNewLine&vbNewLine
ConstAUTHORSAsString=DBLSPACE&vbNewLine&_
"作者:McCormick JEMcGimpsey"
ConstHEADERAsString="工作表保护密码破解"
ConstVERSIONAsString=DBLSPACE&"版本Version1.1.1"
ConstREPBACKAsString=DBLSPACE&""
ConstZHENGLIAsString=DBLSPACE&" hfhzi3—戊冥整理"
ConstALLCLEARAsString=DBLSPACE&"该工作簿中的工作表密码保护已全部解除!!"&DBLSPACE&"请记得另保存"_
&DBLSPACE&"注意:不要用在不当地方,要尊重他人的劳动成果!"
ConstMSGNOPWORDS1AsString="该文件工作表中没有加密"
ConstMSGNOPWORDS2AsString="该文件工作表中没有加密2"
ConstMSGTAKETIMEAsString="解密需花费一定时间,请耐心等候!"&DBLSPACE&"按确定开始破解!"
ConstMSGPWORDFOUND1AsString="密码重新组合为:"&DBLSPACE&"$$"&DBLSPACE&_
"如果该文件工作表有不同密码,将搜索下一组密码并修改清除"
ConstMSGPWORDFOUND2AsString="密码重新组合为:"&DBLSPACE&"$$"&DBLSPACE&_
"如果该文件工作表有不同密码,将搜索下一组密码并解除"
ConstMSGONLYONEAsString="确保为唯一的?"
Dimw1AsWorksheet,w2AsWorksheet
DimiAsInteger,jAsInteger,kAsInteger,lAsInteger
DimmAsInteger,nAsInteger,i1AsInteger,i2AsInteger
Dimi3AsInteger,i4AsInteger,i5AsInteger,i6AsInteger
DimPWord1AsString
DimShTagAsBoolean,WinTagAsBoolean
Application.ScreenUpdating=False
WithActiveWorkbook
WinTag=.ProtectStructureOr.ProtectWindows
EndWith
ShTag=False
ForEachw1InWorksheets
ShTag=ShTagOrw1.ProtectContents
Nextw1
IfNotShTagAndNotWinTagThen
MsgBoxMSGNOPWORDS1,vbInformation,HEADER
ExitSub
EndIf
MsgBoxMSGTAKETIME,vbInformation,HEADER
IfNotWinTagThen
Else
OnErrorResumeNext
Do'dummydoloop
Fori=65To66:Forj=65To66:Fork=65To66
Forl=65To66:Form=65To66:Fori1=65To66
Fori2=65To66:Fori3=65To66:Fori4=65To66
Fori5=65To66:Fori6=65To66:Forn=32To126
WithActiveWorkbook
.UnprotectChr(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=FalseAnd_
.ProtectWindows=FalseThen
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)
MsgBoxApplication.Substitute(MSGPWORDFOUND1,_
"$$",PWord1),vbInformation,HEADER
ExitDo'Bypassallfor...nexts
EndIf
EndWith
Next:Next:Next:Next:Next:Next
Next:Next:Next:Next:Next:Next
LoopUntilTrue
OnErrorGoTo0
EndIfIfWinTagAndNotShTagThen
MsgBoxMSGONLYONE,vbInformation,HEADER
ExitSub
EndIf
OnErrorResumeNextForEachw1InWorksheets
'AttemptclearancewithPWord1
w1.UnprotectPWord1
Nextw1
OnErrorGoTo0
ShTag=False
ForEachw1InWorksheets
'ChecksforallclearShTagtriggeredto1ifnot.
ShTag=ShTagOrw1.ProtectContents
Nextw1
IfShTagThen
ForEachw1InWorksheets
Withw1
If.ProtectContentsThen
OnErrorResumeNext
Do'Dummydoloop
Fori=65To66:Forj=65To66:Fork=65To66
Forl=65To66:Form=65To66:Fori1=65To66
Fori2=65To66:Fori3=65To66:Fori4=65To66
Fori5=65To66:Fori6=65To66:Forn=32To126
.UnprotectChr(i)&Chr(j)&Chr(k)&_
Chr(l)&Chr(m)&Chr(i1)&Chr(i2)&Chr(i3)&_
Chr(i4)&Chr(i5)&Chr(i6)&Chr(n)
IfNot.ProtectContentsThen
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)
MsgBoxApplication.Substitute(MSGPWORDFOUND2,_
"$$",PWord1),vbInformation,HEADER
'leveragefindingPwordbytryingonothersheets
ForEachw2InWorksheets
w2.UnprotectPWord1
Nextw2
ExitDo'Bypassallfor...nexts
EndIf
Next:Next:Next:Next:Next:Next
Next:Next:Next:Next:Next:Next
LoopUntilTrue
OnErrorGoTo0
EndIf
EndWith
Nextw1
EndIf
MsgBoxALLCLEAR&AUTHORS&VERSION&REPBACK&ZHENGLI,vbInformation,HEADER
EndSub -
是放在VBAProject(PERSONAL.XLS)[个人宏工作簿]——[模块]中的,如上图是放在红色标号2[模块1]中