看完本篇文章,你可能學會了怎麼解除工作表密碼保護,但是,解決有些問題,其實沒這麼複雜。
數據模闆的哪些事
一、問題的來由在衛生局上班的一個朋友傳過來一個Excel表格,說這個表格有問題,他怎麼都搞不定,讓我幫他修改下。我便欣然答應,讓微信發過來。
實名制數據采集模闆
收到發過來的表格,我打開一看,這明顯就是某個管理系統的數據錄入模闆,做數據分析的人都知道,原始數據的格式是非常重要的,常常會因為一個數據格式的錯誤,導緻導入系統後結果發生很大的偏差。因此,為了防止錄入人員意外修改數據模闆的固有格式,通常系統都會對這些“模闆式”的工作表進行保護處理。
有問題的錄入數據表
顯然,我朋友錄入的這個數據表因為操作不當(可能是進行了某些複制、粘貼等不規範操作)錄入的數據格式比較混亂,單元格的字體大小、加粗屬性、字體顔色不一緻;對齊方式不一緻;日期格式也不一緻。他想修改成統一的單元格格式,因為這個數據模闆設置了工作表保護的原因,他當然修改不了!
功能區灰色,無法編輯
撤消工作表保護,需要密碼
二、走上了破解之路顯然,要将混亂的數據格式統一修改,就必須要編輯,但是目前工作表被保護了,撤銷工作表保護又沒有密碼,此時唯一的辦法我就想到了破解清除掉工作表保護密碼,才能完成朋友交給的任務。
說幹就幹,目前流行兩種清除工作表保護密碼的方法:(切記不可用于不正當操作)
第1種,利用vba清除(簡單、高效)
操作方法:實踐環節能用圖片表達的就盡量不用文字,我直接上圖:
方法1:利用VBA代碼清除工作表保護操作圖
VBA清除密碼操作成功,可以編輯
附:清除工作表保護密碼VBA代碼:
Public Sub 工作表保護密碼破解()
Const HUANHANG As String = vbNewLine & vbNewLine
Const MINGCHEN As String = "清除工作表保護密碼"
Const JINGGAO As String = "該工作簿中的工作表密碼保護已全部清除!!" & HUANHANG & "請記得另保存" _
& HUANHANG & "注意:不要用在不當地方,要尊重他人的勞動成果!"
Const TISHI1 As String = "該文件工作表中沒有加密"
Const TISHI2 As String = "該文件工作表中沒有加密2"
Const KSPJ As String = "解密需花費一定時間,請耐心等候!" & HUANHANG & "按确定開始清除!"
Const FXMM1 As String = "密碼重新組合為:" & HUANHANG & "$$" & HUANHANG & _
"如果該文件工作表有不同密碼,将搜索下一組密碼并修改清除"
Const FXMM2 As String = "密碼重新組合為:" & HUANHANG & "$$" & HUANHANG & _
"如果該文件工作表有不同密碼,将搜索下一組密碼并解除"
Const MSGONLYONE As String = "确保為唯一的?"
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 TISHI1, vbInformation, MINGCHEN
Exit Sub
End If
MsgBox KSPJ, vbInformation, MINGCHEN
If Not WinTag Then
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(FXMM1, _
"$$", PWord1), vbInformation, MINGCHEN
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, MINGCHEN
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(FXMM2, _
"$$", PWord1), vbInformation, MINGCHEN
'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 JINGGAO, vbInformation, MINGCHEN
End Sub
以上是清除工作表保護代碼,直接複制粘貼到sub模塊運行即可!
第2種,利用RAR軟件清除(不一定能成功)
操作方法:實踐環節,依然直接上操作圖:
方法2:利用RAR軟件清除工作表密碼保護
- 将帶有密碼保護的excel表格文件擴展名由.xlsx改為.rar壓縮文件格式。
- 打開壓縮包,依次進入“xl”→“worksheets”文件夾,在這裡找到你需要清除密碼的工作表(裡面可能有幾個sheet,找到你要處理的sheet,如果不知道是哪個sheet,可通過vba編輯器的工程屬性查看)本案例信息表對應的是“sheet4.xlm”,點擊對應的sheet.xlm,然後右鍵用記事本打開,找到含有“<sheetProtection……/>”文字的這段代碼後,将其删除并保存當前記事本文件。
通過vba工程屬性查看 對應的sheet表
3.保存修改後的“sheet4.xml”,回到壓縮包軟件,點擊确定修改更新到壓縮包,再将該文件的擴展名.rar改為原後綴名.xlsx。
4.此時,再打開這個Excel表格後工作表保護密碼已經清除了,是不是很有成就感呢?
三、其實,費了半天勁,這個問題沒這麼複雜!雖然通過暴力清除工作表密碼保護的方法,實現了對模闆數據表的編輯。
但是,我們都錯了!!!處理這樣的問題,用不着這麼複雜。
因為這種模闆式的表格,被加密保護本來就是系統為了防止錄入人員意外修改格式而設置的。它對表格中的一些字段格式都是有固定要求和說明的,并且數據行都已經設定好了單元格格式,錄入人員隻需要錄入數據值,不需要修改單元格格式。
如果在後期錄入的數據格式出現了參差不齊的情況,根本不用這麼麻煩去破解什麼工作表密碼。此時,你隻需要一個Ctrl D快捷鍵就可以輕松解決。Ctrl D的功能是向下複制填充,被加密保護了的工作表,單元格格式是沒法修改的,但利用Ctrl D可以将模闆數據表中第一行的原始格式向下複制到數據錄入區域,然後再清除複制的數據,重新粘貼需要錄入數據的值,這樣操作就達到了恢複模闆數據表的統一格式。
恢複Excel數據模闆格式的正确姿勢圖
顯然,對于朋友的這個問題,我們費盡周折破解密碼,是把簡單的問題複雜化了。
總結:今天在頭條上分享這樣的一個案例,除了教會大家如何清除工作表密碼保護的兩種方法外,也給遇到了類似問題的朋友們提個醒,小心避坑,不要把簡單的問題複雜化!記住:任何事情都肯定有更簡易的方法,任何問題都肯定有更簡單的答案,越簡單就越容易找到核心,越容易達緻成功。
我是辦公室小崔,推祟極簡、實用的辦公方法與經驗,助力職場人士更加從容辦公。有問題歡迎大家與我交流。[微風]
,