Excel—“撤销工作表保护密码”的破解并获取原始密码工作中,如果遇到过这样的情况:您用Excel编制的报表、表格、程序等,在单元格中设置了公式、函数等,为了防止其他人修改您的设置或者防止您自己无意中修改,您可能会使用Excel的工作表保护功能,但时间久了保护密码容易忘记,这该怎么办?有时您从网上下载的Excel格式的小程序,您想修改,但是作者加了工作表保护密码,怎么办?您只要按照以下步骤操作,Excel工作表保护密码瞬间即破!1、打开您需要破解保护密码的Excel文件;2、依次点击菜单栏上的工具---宏----录制新宏,输入宏名字如:aa;3、停止录制(这样得到一个空宏);4、依次点击菜单栏上的工具---宏----宏,选aa,点编辑按钮;5、删除窗口中的所有字符(只有几个),替换为下面的内容;复制以下代码OptionExplicitPublicSubAllInternalPasswords()'Breaksworksheetandworkbookstructurepasswords.BobMcCormick'probablyoriginatorofbasecodealgorithmmodifiedforcoverage'ofworkbookstructure/windowspasswordsandformultiplepasswords''NormanHarkerandJEMcGimpsey27-Dec-2002(Version1.1)'Modified2003-Apr-04byJEM:Allmsgstoconstants,and'eliminateoneExitSub(Version1.1.1)'RevealshashedpasswordsNOToriginalpasswordsConstDBLSPACEAsString=vbNewLine&vbNewLineConstAUTHORSAsString=DBLSPACE&vbNewLine&_AdaptedfromBobMcCormickbasecodeby&_NormanHarkerandJEMcGimpseyConstHEADERAsString=AllInternalPasswordsUserMessageConstVERSIONAsString=DBLSPACE&Version1.1.12003-Apr-04ConstREPBACKAsString=DBLSPACE&Pleasereportfailure&_tothemicrosoft.public.excel.programmingnewsgroup.ConstALLCLEARAsString=DBLSPACE&Theworkbookshould&_nowbefreeofallpasswordprotection,somakesureyou:&_DBLSPACE&SAVEITNOW!&DBLSPACE&andalso&_DBLSPACE&BACKUP!,BACKUP!!,BACKUP!!!&_DBLSPACE&Also,rememberthatthepasswordwas&_putthereforareason.Don'tstuffupcrucialformulas&_ordata.&DBLSPACE&Accessanduseofsomedata&_maybeanoffense.Ifindoubt,don't.ConstMSGNOPWORDS1AsString=Therewerenopasswordson&_sheets,orworkbookstructureorwindows.&AUTHORS&VERSIONConstMSGNOPWORDS2AsString=Therewasnoprotectionto&_workbookstructureorwindows.&DBLSPACE&_Proceedingtounprotectsheets.&AUTHORS&VERSIONConstMSGTAKETIMEAsString=AfterpressingOKbuttonthis&_willtakesometime.&DBLSPACE&Amountoftime&_dependsonhowmanydifferentpasswords,the&_passwords,andyourcomputer'sspecification.&DBLSPACE&_Justbepatient!Makemeacoffee!&AUTHORS&VERSIONConstMSGPWORDFOUND1AsString=YouhadaWorksheet&_StructureorWindowsPasswordset.&DBLSPACE&_Thepasswordfoundwas:&DBLSPACE&$$&DBLSPACE&_Noteitdownforpotentialfutureuseinotherworkbooksby&_thesamepersonwhosetthispassword.&DBLSPACE&_Nowtocheckandclearotherpasswords.&AUTHORS&VERSIONConstMSGPWORDFOUND2AsString=YouhadaWorksheet&_passwordset.&DBLSPACE&Thepasswordfoundwas:&_DBLSPACE&$$&DBLSPACE&Noteitdownforpotential&_futureuseinotherworkbooksbysamepersonwho&_setthispassword.&DBLSPACE&Nowtocheckandclear&_otherpasswords.&AUTHORS&VERSIONConstMSGONLYONEAsString=Onlystructure/windows&_protectedwiththepasswordthatwasjustfound.&_ALLCLEAR&AUTHORS&VERSION&REPBACKDimw1AsWorksheet,w2AsWorksheetDimiAsInteger,jAsInteger,kAsInteger,lAsIntegerDimmAsInteger,nAsInteger,i1AsInteger,i2AsIntegerDimi3AsInteger,i4AsInteger,i5AsInteger,i6AsIntegerDimPWord1AsStringDimShTagAsBoolean,WinTagAsBooleanApplication.ScreenUpdating=FalseWithActiveWorkbookWinTag=.ProtectStructureOr.ProtectWindowsEndWithShTag=FalseForEachw1InWorksheetsShTag=ShTagOrw1.ProtectContentsNextw1IfNotShTagAndNotWinTagThenMsgBoxMSGNOPWORDS1,vbInformation,HEADERExitSubEndIfMsgBoxMSGTAKETIME,vbInformation,HEADERIfNotWinTagThenMsgBoxMSGNOPWORDS2,vbInformation,HEADERElseOnErrorResumeNextDo'dummydoloopFori=65To66:Forj=65To66:Fork=65To66Forl=65To66:Form=65To66:Fori1=65To66Fori2=65To66:Fori3=65To66:Fori4=65To66Fori5=65To66:Fori6=65To66:Forn=32To126WithActiveWorkbook.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=FalseThenPWord1=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,HEADERExitDo'Bypassallfor...nextsEndIfEndWithNext:Next:Next:Next:Next:NextNext:Next:Next:Next:Next:NextLoopUntilTrueOnErrorGoTo0EndIfIfWinTagAndNotShTagThenMsgBoxMSGONLYONE,vbInformation,HEADERExitSubEndIfOnErrorResumeNextForEachw1InWorksheets'AttemptclearancewithPWord1w1.UnprotectPWord1Nextw1OnErrorGoTo0ShTag=FalseForEachw1InWorksheets'ChecksforallclearShTagtriggeredto1ifnot.ShTag=ShTagOrw1.ProtectContentsNextw1IfShTagThenForEachw1InWorksheetsWithw1If.ProtectContentsThenOnErrorResumeNextDo'DummydoloopFori=65To66:Forj=65To66:Fork=65To66Forl=65To66:Form=65To66:Fori1=65To66Fori2=65To66:Fori3=65To66:Fori4=65To66Fori5=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.ProtectContentsThenPWord1=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'leveragefindingPwordbytryingonothersheetsForEachw2InWorksheetsw2.UnprotectPWord1Nextw2ExitDo'Bypassallfor...nextsEndIfNext:Next:Next:Next:Next:NextNext:Next:Next:Next:Next:NextLoopUntilTrueOnErrorGoTo0EndIfEndWithNextw1EndIfMsgBoxALLCLEAR&AUTHORS&VERSION&REPBACK,vbInformation,HEADEREndSub-----------------------------------------------------------------------------------------复制到横线以上6、关闭编辑窗口;7、依次点击菜单栏上的工具---宏--