在人員眾多的公司服務,總是會有人把 Excel 上鎖卻又忘記這是誰上的鎖,密碼是什麼,密碼要找誰問的情況,於是只好學會如何把Excel密碼移除的技能。
保護密碼:可以在開啟Excel時就驗證密碼,沒有輸入正確密碼不能打開。
如果是不要分享出去的Excel,可使用保護密碼,僅提供密碼給特定人員,達到保護Excel內資料的目的。
防寫密碼:同樣在開啟Excel時就驗證密碼,沒有輸入正確密碼不能再寫入該Excel檔,但可以用唯讀方式打開。
如果要分享給大多數人,但又不想要資料被亂改,可以用這種方式保護Excel。
VBA 專案也可以設定密碼,讓使用者看不到我們的程式碼。
在專案根目錄上按滑鼠右鍵,選擇"VBAProject 專案屬性"。
再選擇"保護"頁籤,這裡可以勾選"鎖定專案以供檢視",再輸入密碼,就可以讓其他看不到我們的VBA程式碼。
Excel副檔名必須是 *.xlsx 和 *.xlsm,如果你拿到的是 *.xls,並且可以用Excel打開,那就先把它另存成 xlsx 或 xlsm格式。
把.xlsx或.xlsm直接改成.zip
用 7-zip 打開 ZIP檔後,我們可以看到它包含了幾個資料夾和一個 XML檔,我們這時再往下打開"xl"資料夾。
下圖是例外情況: 因為Excel建立者使用了"保護活頁簿"
如果你看不到"xl"資料夾,表示你中大獎了,Excel建立者使用了"保護活頁簿",這部分無法利用本文的方法進行破解。
打開 "xl" 資料夾後,可以看到更多資料夾和一些XML檔,如果是包含巨集的XLSM檔,就會有一個 "vbaProject.bin" 的檔案,這就我們的 VBA 專案檔案。如果我們要破解的是"保護工作表"的密碼,則再繼續打開"worksheets"資料夾。
"worksheets" 資料夾內會儲存所有 Excel 包含的工作表,這時就要看你要破解的"保護工作表"在那一個"sheet",就打開該xml編輯。
使用記事本編輯 "sheet3.xml",搜尋"sheetProtection",然後將整個<sheetProtection ... />刪除,再存檔,這樣就可以破解"保護工作表"的密碼了。
先將 VBA 專案檔 "vbaProject.bin" 從 ZIP中複製出來,再使用 "HEX Editor"打開編輯它。我這裡使用VSCode 加上"HEX Editor"外掛程式。
打開"vbaProject.bin"後,按下Ctrl+F,搜尋 "DPB=" ,在這裡把 "DPB=" 改成"DPX="再存檔。
然後把修改過的"vbaProject.bin"覆蓋取代掉 ZIP檔中的"vbaProject.bin",再存檔,最後把副檔名 ".zip",再改回".xlsm"。
這是重新打開excel檔一定會有錯誤訊息"包含不正確的鍵 'DPX'",這裡按"是"就好。
然後打開"Visual Basic 編輯器"時會再跳出一堆錯誤訊息 "無法預期的錯誤(XXXXX)",這裡一直按"確定"就好。
進到 VBA編輯視窗,再打開 VBAProject 專案屬性,選擇"保護"頁面,再把"鎖定專案以供檢視"的勾勾"取消"掉。 然後存檔離開,下次再打開VBA編輯器,保護密碼就被破解掉了。
這裡的破解方法,請小心使用,破解前或許先問問該Excel檔提供者,禮貌的詢問對方"是否"可以提供保護密碼,畢竟大家都在同一公司下工作,隨便破解別人的密碼,最後被對方知道,通常會被對方留下一些不好的印象。