<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://wired.scio.icu/index.php?action=history&amp;feed=atom&amp;title=%E8%A7%A3%E9%99%A4excel%E5%8D%95%E5%85%83%E6%A0%BC%E4%BF%9D%E6%8A%A4</id>
	<title>解除excel单元格保护 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wired.scio.icu/index.php?action=history&amp;feed=atom&amp;title=%E8%A7%A3%E9%99%A4excel%E5%8D%95%E5%85%83%E6%A0%BC%E4%BF%9D%E6%8A%A4"/>
	<link rel="alternate" type="text/html" href="https://wired.scio.icu/index.php?title=%E8%A7%A3%E9%99%A4excel%E5%8D%95%E5%85%83%E6%A0%BC%E4%BF%9D%E6%8A%A4&amp;action=history"/>
	<updated>2026-06-25T18:21:39Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wired.scio.icu/index.php?title=%E8%A7%A3%E9%99%A4excel%E5%8D%95%E5%85%83%E6%A0%BC%E4%BF%9D%E6%8A%A4&amp;diff=167&amp;oldid=prev</id>
		<title>Scio：​导入1个版本</title>
		<link rel="alternate" type="text/html" href="https://wired.scio.icu/index.php?title=%E8%A7%A3%E9%99%A4excel%E5%8D%95%E5%85%83%E6%A0%BC%E4%BF%9D%E6%8A%A4&amp;diff=167&amp;oldid=prev"/>
		<updated>2024-12-30T06:15:43Z</updated>

		<summary type="html">&lt;p&gt;导入1个版本&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2024年12月30日 (一) 14:15的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key Wired:diff:1.41:old-166:rev-167 --&gt;
&lt;/table&gt;</summary>
		<author><name>Scio</name></author>
	</entry>
	<entry>
		<id>https://wired.scio.icu/index.php?title=%E8%A7%A3%E9%99%A4excel%E5%8D%95%E5%85%83%E6%A0%BC%E4%BF%9D%E6%8A%A4&amp;diff=166&amp;oldid=prev</id>
		<title>2024年12月26日 (四) 04:49 Scio</title>
		<link rel="alternate" type="text/html" href="https://wired.scio.icu/index.php?title=%E8%A7%A3%E9%99%A4excel%E5%8D%95%E5%85%83%E6%A0%BC%E4%BF%9D%E6%8A%A4&amp;diff=166&amp;oldid=prev"/>
		<updated>2024-12-26T04:49:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;出处见代码原作者注释部分。&lt;br /&gt;
&lt;br /&gt;
== 图解 ==&lt;br /&gt;
很久(2018年左右)之前做的图了，讲究看吧。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img loading=&amp;quot;lazy&amp;quot; src=&amp;#039;https://scio.eu.org/WIKI/图片/小知识/破解excel密码/小知识-破解excle密码1.avif&amp;#039; /&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img loading=&amp;quot;lazy&amp;quot; src=&amp;#039;https://scio.eu.org/WIKI/图片/小知识/破解excel密码/小知识-破解excle密码2.avif&amp;#039; /&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img loading=&amp;quot;lazy&amp;quot; src=&amp;#039;https://scio.eu.org/WIKI/图片/小知识/破解excel密码/小知识-破解excle密码3.avif&amp;#039; /&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img loading=&amp;quot;lazy&amp;quot; src=&amp;#039;https://scio.eu.org/WIKI/图片/小知识/破解excel密码/小知识-破解excle密码4.avif&amp;#039; /&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img loading=&amp;quot;lazy&amp;quot; src=&amp;#039;https://scio.eu.org/WIKI/图片/小知识/破解excel密码/小知识-破解excle密码8.avif&amp;#039; /&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img loading=&amp;quot;lazy&amp;quot; src=&amp;#039;https://scio.eu.org/WIKI/图片/小知识/破解excel密码/小知识-破解excle密码6.avif&amp;#039; /&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img loading=&amp;quot;lazy&amp;quot; src=&amp;#039;https://scio.eu.org/WIKI/图片/小知识/破解excel密码/小知识-破解excle密码7.avif&amp;#039; /&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 代码 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Public Sub AllInternalPasswords()&lt;br /&gt;
  &amp;#039; Breaks worksheet and workbook structure passwords. Bob McCormick&lt;br /&gt;
  &amp;#039; probably originator of base code algorithm modified for coverage&lt;br /&gt;
  &amp;#039; of workbook structure / windows passwords and for multiple passwords&lt;br /&gt;
  &amp;#039;&lt;br /&gt;
  &amp;#039; Norman Harker and JE McGimpsey 27-Dec-2002 (Version 1.1)&lt;br /&gt;
  &amp;#039; Modified 2003-Apr-04 by JEM: All msgs to constants, and&lt;br /&gt;
  &amp;#039;  eliminate one Exit Sub (Version 1.1.1)&lt;br /&gt;
  &amp;#039; Reveals hashed passwords NOT original passwords&lt;br /&gt;
  Const DBLSPACE As String = vbNewLine &amp;amp; vbNewLine&lt;br /&gt;
  Const AUTHORS As String = DBLSPACE &amp;amp; vbNewLine &amp;amp; _&lt;br /&gt;
      &amp;quot;Adapted from Bob McCormick base code by &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;Norman Harker and JE McGimpsey&amp;quot;&lt;br /&gt;
  Const HEADER As String = &amp;quot;AllInternalPasswords User Message&amp;quot;&lt;br /&gt;
  Const VERSION As String = DBLSPACE &amp;amp; &amp;quot;Version 1.1.1 2003-Apr-04&amp;quot;&lt;br /&gt;
  Const REPBACK As String = DBLSPACE &amp;amp; &amp;quot;Please report failure &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;to the microsoft.public.excel.programming newsgroup.&amp;quot;&lt;br /&gt;
  Const ALLCLEAR As String = DBLSPACE &amp;amp; &amp;quot;The workbook should &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;now be free of all password protection, so make sure you:&amp;quot; &amp;amp; _&lt;br /&gt;
      DBLSPACE &amp;amp; &amp;quot;SAVE IT NOW!&amp;quot; &amp;amp; DBLSPACE &amp;amp; &amp;quot;and also&amp;quot; &amp;amp; _&lt;br /&gt;
      DBLSPACE &amp;amp; &amp;quot;BACKUP!, BACKUP!!, BACKUP!!!&amp;quot; &amp;amp; _&lt;br /&gt;
      DBLSPACE &amp;amp; &amp;quot;Also, remember that the password was &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;put there for a reason. Don&amp;#039;t stuff up crucial formulas &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;or data.&amp;quot; &amp;amp; DBLSPACE &amp;amp; &amp;quot;Access and use of some data &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;may be an offense. If in doubt, don&amp;#039;t.&amp;quot;&lt;br /&gt;
  Const MSGNOPWORDS1 As String = &amp;quot;There were no passwords on &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;sheets, or workbook structure or windows.&amp;quot; &amp;amp; AUTHORS &amp;amp; VERSION&lt;br /&gt;
  Const MSGNOPWORDS2 As String = &amp;quot;There was no protection to &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;workbook structure or windows.&amp;quot; &amp;amp; DBLSPACE &amp;amp; _&lt;br /&gt;
      &amp;quot;Proceeding to unprotect sheets.&amp;quot; &amp;amp; AUTHORS &amp;amp; VERSION&lt;br /&gt;
  Const MSGTAKETIME As String = &amp;quot;After pressing OK button this &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;will take some time.&amp;quot; &amp;amp; DBLSPACE &amp;amp; &amp;quot;Amount of time &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;depends on how many different passwords, the &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;passwords, and your computer&amp;#039;s specification.&amp;quot; &amp;amp; DBLSPACE &amp;amp; _&lt;br /&gt;
      &amp;quot;Just be patient! Make me a coffee!&amp;quot; &amp;amp; AUTHORS &amp;amp; VERSION&lt;br /&gt;
  Const MSGPWORDFOUND1 As String = &amp;quot;You had a Worksheet &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;Structure or Windows Password set.&amp;quot; &amp;amp; DBLSPACE &amp;amp; _&lt;br /&gt;
      &amp;quot;The password found was: &amp;quot; &amp;amp; DBLSPACE &amp;amp; &amp;quot;$$&amp;quot; &amp;amp; DBLSPACE &amp;amp; _&lt;br /&gt;
      &amp;quot;Note it down for potential future use in other workbooks by &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;the same person who set this password.&amp;quot; &amp;amp; DBLSPACE &amp;amp; _&lt;br /&gt;
      &amp;quot;Now to check and clear other passwords.&amp;quot; &amp;amp; AUTHORS &amp;amp; VERSION&lt;br /&gt;
  Const MSGPWORDFOUND2 As String = &amp;quot;You had a Worksheet &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;password set.&amp;quot; &amp;amp; DBLSPACE &amp;amp; &amp;quot;The password found was: &amp;quot; &amp;amp; _&lt;br /&gt;
      DBLSPACE &amp;amp; &amp;quot;$$&amp;quot; &amp;amp; DBLSPACE &amp;amp; &amp;quot;Note it down for potential &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;future use in other workbooks by same person who &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;set this password.&amp;quot; &amp;amp; DBLSPACE &amp;amp; &amp;quot;Now to check and clear &amp;quot; &amp;amp; _&lt;br /&gt;
      &amp;quot;other passwords.&amp;quot; &amp;amp; AUTHORS &amp;amp; VERSION&lt;br /&gt;
  Const MSGONLYONE As String = &amp;quot;Only structure / windows &amp;quot; &amp;amp; _&lt;br /&gt;
       &amp;quot;protected with the password that was just found.&amp;quot; &amp;amp; _&lt;br /&gt;
       ALLCLEAR &amp;amp; AUTHORS &amp;amp; VERSION &amp;amp; REPBACK&lt;br /&gt;
  Dim w1 As Worksheet, w2 As Worksheet&lt;br /&gt;
  Dim i As Integer, j As Integer, k As Integer, l As Integer&lt;br /&gt;
  Dim m As Integer, n As Integer, i1 As Integer, i2 As Integer&lt;br /&gt;
  Dim i3 As Integer, i4 As Integer, i5 As Integer, i6 As Integer&lt;br /&gt;
  Dim PWord1 As String&lt;br /&gt;
  Dim ShTag As Boolean, WinTag As Boolean&lt;br /&gt;
  &lt;br /&gt;
  Application.ScreenUpdating = False&lt;br /&gt;
  With ActiveWorkbook&lt;br /&gt;
    WinTag = .ProtectStructure Or .ProtectWindows&lt;br /&gt;
  End With&lt;br /&gt;
  ShTag = False&lt;br /&gt;
  For Each w1 In Worksheets&lt;br /&gt;
      ShTag = ShTag Or w1.ProtectContents&lt;br /&gt;
  Next w1&lt;br /&gt;
  If Not ShTag And Not WinTag Then&lt;br /&gt;
    MsgBox MSGNOPWORDS1, vbInformation, HEADER&lt;br /&gt;
    Exit Sub&lt;br /&gt;
  End If&lt;br /&gt;
  MsgBox MSGTAKETIME, vbInformation, HEADER&lt;br /&gt;
  If Not WinTag Then&lt;br /&gt;
    MsgBox MSGNOPWORDS2, vbInformation, HEADER&lt;br /&gt;
  Else&lt;br /&gt;
   On Error Resume Next&lt;br /&gt;
   Do   &amp;#039;dummy do loop&lt;br /&gt;
    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66&lt;br /&gt;
    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66&lt;br /&gt;
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66&lt;br /&gt;
    For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126&lt;br /&gt;
    With ActiveWorkbook&lt;br /&gt;
     .Unprotect Chr(i) &amp;amp; Chr(j) &amp;amp; Chr(k) &amp;amp; _&lt;br /&gt;
       Chr(l) &amp;amp; Chr(m) &amp;amp; Chr(i1) &amp;amp; Chr(i2) &amp;amp; _&lt;br /&gt;
       Chr(i3) &amp;amp; Chr(i4) &amp;amp; Chr(i5) &amp;amp; Chr(i6) &amp;amp; Chr(n)&lt;br /&gt;
     If .ProtectStructure = False And _&lt;br /&gt;
     .ProtectWindows = False Then&lt;br /&gt;
       PWord1 = Chr(i) &amp;amp; Chr(j) &amp;amp; Chr(k) &amp;amp; Chr(l) &amp;amp; _&lt;br /&gt;
        Chr(m) &amp;amp; Chr(i1) &amp;amp; Chr(i2) &amp;amp; Chr(i3) &amp;amp; _&lt;br /&gt;
        Chr(i4) &amp;amp; Chr(i5) &amp;amp; Chr(i6) &amp;amp; Chr(n)&lt;br /&gt;
       MsgBox Application.Substitute(MSGPWORDFOUND1, _&lt;br /&gt;
          &amp;quot;$$&amp;quot;, PWord1), vbInformation, HEADER&lt;br /&gt;
       Exit Do &amp;#039;Bypass all for...nexts&lt;br /&gt;
     End If&lt;br /&gt;
    End With&lt;br /&gt;
    Next: Next: Next: Next: Next: Next&lt;br /&gt;
    Next: Next: Next: Next: Next: Next&lt;br /&gt;
   Loop Until True&lt;br /&gt;
   On Error GoTo 0&lt;br /&gt;
  End If&lt;br /&gt;
  If WinTag And Not ShTag Then&lt;br /&gt;
   MsgBox MSGONLYONE, vbInformation, HEADER&lt;br /&gt;
   Exit Sub&lt;br /&gt;
  End If&lt;br /&gt;
  On Error Resume Next&lt;br /&gt;
  For Each w1 In Worksheets&lt;br /&gt;
   &amp;#039;Attempt clearance with PWord1&lt;br /&gt;
   w1.Unprotect PWord1&lt;br /&gt;
  Next w1&lt;br /&gt;
  On Error GoTo 0&lt;br /&gt;
  ShTag = False&lt;br /&gt;
  For Each w1 In Worksheets&lt;br /&gt;
   &amp;#039;Checks for all clear ShTag triggered to 1 if not.&lt;br /&gt;
   ShTag = ShTag Or w1.ProtectContents&lt;br /&gt;
  Next w1&lt;br /&gt;
  If ShTag Then&lt;br /&gt;
    For Each w1 In Worksheets&lt;br /&gt;
     With w1&lt;br /&gt;
      If .ProtectContents Then&lt;br /&gt;
       On Error Resume Next&lt;br /&gt;
       Do   &amp;#039;Dummy do loop&lt;br /&gt;
        For i = 65 To 66: For j = 65 To 66: For k = 65 To 66&lt;br /&gt;
        For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66&lt;br /&gt;
        For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66&lt;br /&gt;
        For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126&lt;br /&gt;
        .Unprotect Chr(i) &amp;amp; Chr(j) &amp;amp; Chr(k) &amp;amp; _&lt;br /&gt;
         Chr(l) &amp;amp; Chr(m) &amp;amp; Chr(i1) &amp;amp; Chr(i2) &amp;amp; Chr(i3) &amp;amp; _&lt;br /&gt;
         Chr(i4) &amp;amp; Chr(i5) &amp;amp; Chr(i6) &amp;amp; Chr(n)&lt;br /&gt;
        If Not .ProtectContents Then&lt;br /&gt;
         PWord1 = Chr(i) &amp;amp; Chr(j) &amp;amp; Chr(k) &amp;amp; Chr(l) &amp;amp; _&lt;br /&gt;
          Chr(m) &amp;amp; Chr(i1) &amp;amp; Chr(i2) &amp;amp; Chr(i3) &amp;amp; _&lt;br /&gt;
          Chr(i4) &amp;amp; Chr(i5) &amp;amp; Chr(i6) &amp;amp; Chr(n)&lt;br /&gt;
         MsgBox Application.Substitute(MSGPWORDFOUND2, _&lt;br /&gt;
            &amp;quot;$$&amp;quot;, PWord1), vbInformation, HEADER&lt;br /&gt;
         &amp;#039;leverage finding Pword by trying on other sheets&lt;br /&gt;
         For Each w2 In Worksheets&lt;br /&gt;
          w2.Unprotect PWord1&lt;br /&gt;
         Next w2&lt;br /&gt;
         Exit Do &amp;#039;Bypass all for...nexts&lt;br /&gt;
        End If&lt;br /&gt;
        Next: Next: Next: Next: Next: Next&lt;br /&gt;
        Next: Next: Next: Next: Next: Next&lt;br /&gt;
       Loop Until True&lt;br /&gt;
       On Error GoTo 0&lt;br /&gt;
      End If&lt;br /&gt;
     End With&lt;br /&gt;
    Next w1&lt;br /&gt;
  End If&lt;br /&gt;
  MsgBox ALLCLEAR &amp;amp; AUTHORS &amp;amp; VERSION &amp;amp; REPBACK, vbInformation, HEADER&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:实践]]&lt;/div&gt;</summary>
		<author><name>Scio</name></author>
	</entry>
</feed>