首页 文萃 技术文档 二手市场 培训机构 e书下载 五星图书 考试资源 软件下载 标准下载 最新资讯
图书资源 留言板 联系我们
EXCEL中工作表保护密码如何破解|西安信息资源网|E书下载|电子书下载|信息发布


EXCEL中工作表保护密码如何破解 转帖

推荐人:WD

 
 网上流传有一个宏,可以解除工作表保护的密码,我自己在2003上试了一下,可以的,代码如下:

 Option Explicit 

 Public Sub AllInternalPasswords() 
 ' Breaks worksheet and workbook structure passwords. Bob McCormick 
 ' probably originator of base code algorithm modified for coverage 
 ' of workbook structure / windows passwords and for multiple passwords 
 ' 
 ' Norman Harker and JE McGimpsey 27-Dec-2002 (Version 1.1) 
 ' Modified 2003-Apr-04 by JEM: All msgs to constants, and 
 ' eliminate one Exit Sub (Version 1.1.1) 
 ' Reveals hashed passwords NOT original passwords 
 Const DBLSPACE As String = vbNewLine & vbNewLine 
 Const AUTHORS As String = DBLSPACE & vbNewLine & _ 
 "Adapted from Bob McCormick base code by" & _ 
 "Norman Harker and JE McGimpsey" 
 Const HEADER As String = "AllInternalPasswords User Message" 
 Const VERSION As String = DBLSPACE & "Version 1.1.1 2003-Apr-04" 
 Const REPBACK As String = DBLSPACE & "Please report failure " & _ 
 "to the microsoft.public.excel.programming newsgroup." 
 Const ALLCLEAR As String = DBLSPACE & "The workbook should " & _ 
 "now be free of all password protection, so make sure you:" & _ 
 DBLSPACE & "SAVE IT NOW!" & DBLSPACE & "and also" & _ 
 DBLSPACE & "BACKUP!, BACKUP!!, BACKUP!!!" & _ 
 DBLSPACE & "Also, remember that the password was " & _ 
 "put there for a reason. Don't stuff up crucial formulas " & _ 
 "or data." & DBLSPACE & "Access and use of some data " & _ 
 "may be an offense. If in doubt, don't." 
 Const MSGNOPWORDS1 As String = "There were no passwords on " & _ 
 "sheets, or workbook structure or windows." & AUTHORS & VERSION 
 Const MSGNOPWORDS2 As String = "There was no protection to " & _ 
 "workbook structure or windows." & DBLSPACE & _ 
 "Proceeding to unprotect sheets." & AUTHORS & VERSION 
 Const MSGTAKETIME As String = "After pressing OK button this " & _ 
 "will take some time." & DBLSPACE & "Amount of time " & _ 
 "depends on how many different passwords, the " & _ 
 "passwords, and your computer's specification." & DBLSPACE & _ 
 "Just be patient! Make me a coffee!" & AUTHORS & VERSION 
 Const MSGPWORDFOUND1 As String = "You had a Worksheet " & _ 
 "Structure or Windows Password set." & DBLSPACE & _ 
 "The password found was: " & DBLSPACE & "$$" & DBLSPACE & _ 
 "Note it down for potential future use in other workbooks by " & _ 
 "the same person who set this password." & DBLSPACE & _ 
 "Now to check and clear other passwords." & AUTHORS & VERSION 
 Const MSGPWORDFOUND2 As String = "You had a Worksheet " & _ 
 "password set." & DBLSPACE & "The password found was: " & _ 
 DBLSPACE & "$$" & DBLSPACE & "Note it down for potential " & _ 
 "future use in other workbooks by same person who " & _ 
 "set this password." & DBLSPACE & "Now to check and clear " & _ 
 "other passwords." & AUTHORS & VERSION 
 Const MSGONLYONE As String = "Only structure / windows " & _ 
 "protected with the password that was just found." & _ 
 ALLCLEAR & AUTHORS & VERSION & REPBACK 
 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 
 MsgBox MSGNOPWORDS2, vbInformation, HEADER 
 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, vbInformation, HEADER 
 End Sub 
 ----------------------------------- 
 Excel工具中 菜单-->工具-->宏-->宏  运行之,点两次确定即可
 

 

[收藏本文]   [发表评论]  [查看评论我要推荐文章

上一篇:经典算法-C#四种排序算法 下一篇:病毒常用技术之远程线程 插入技术

最新参与TOP10
ascall码
【经典推荐】每个JAVA初学者都应该搞懂的问题
成功安装Mysql+Apache2+php5过程
五种提高 SQL 性能的方法
配置Eclpise+tomcat并实现JSP的编写与部署
Eclipse 3.0 上配置JSP开发环境
PHP中的XML拉模式详解
php的ajax框架xajax入门与试用
win2000server IIS和tomcat5多站点配置
JSP连接SQL Server 2000系统配置

西安信息资源网 版权所有 全球排名

QQ:363694816