單元格不支持此功能?一文讀懂解鎖與防護(hù))
做數(shù)據(jù)整理的人十個(gè)里估計(jì)有八個(gè)碰到過這個(gè)彈窗正想往表格里敲點(diǎn)什么結(jié)果Excel直接甩出一句“被保護(hù)單元格不支持此功能”光標(biāo)進(jìn)不去鼠標(biāo)也點(diǎn)不動(dòng)。更氣人的是有時(shí)候整張表看起來一切正常連想復(fù)制一行數(shù)據(jù)都復(fù)制不出來。這個(gè)提示背后的原因其實(shí)不復(fù)雜——你正在操作的工作表被設(shè)置了保護(hù)而你碰到的區(qū)域里的單元格恰好又處于“鎖定”狀態(tài)。這篇文章就把這個(gè)問題從頭到尾捋一遍提示是怎么觸發(fā)的、有密碼時(shí)的正規(guī)解法是什么、忘了密碼怎么破、以及作為表格的制作者怎么設(shè)置保護(hù)才能不讓別人遇到同樣的坑。適用人群包括經(jīng)常收發(fā)表格的職場人、用Excel做報(bào)表和數(shù)據(jù)管理的同學(xué)還有要給團(tuán)隊(duì)分發(fā)表格的負(fù)責(zé)人。1. 先搞清楚這個(gè)提示從哪來1.1 被保護(hù)單元格的真相鎖定和保護(hù)是兩碼事先說一個(gè)很多人不知道的點(diǎn)單元格本身的“鎖定”和“工作表保護(hù)”是兩個(gè)完全獨(dú)立的機(jī)制。在Excel里每個(gè)單元格的格式設(shè)置中都有一組屬性其中一個(gè)叫“鎖定”旁邊還有個(gè)“隱藏”先按下不表。默認(rèn)情況下新建的工作表里所有單元格都是勾選了“鎖定”的。但注意光是鎖定表格一樣能隨便改——因?yàn)殒i定這個(gè)屬性只有在工作表被“保護(hù)”時(shí)才會真正生效。換句話說鎖定是一把掛在門上的鎖工作表保護(hù)是“鎖門”這個(gè)動(dòng)作。門上的鎖平時(shí)都在但只有執(zhí)行了保護(hù)工作表這個(gè)動(dòng)作鎖才算數(shù)。所以當(dāng)你看到“被保護(hù)單元格不支持此功能”時(shí)說明兩件事同時(shí)成立了第一你操作的單元格處于鎖定狀態(tài)第二當(dāng)前工作表被加了保護(hù)。這兩個(gè)條件缺一個(gè)這個(gè)彈窗都不會出現(xiàn)。還有個(gè)小坑鎖定的單元格在外觀上沒有任何標(biāo)記不會變灰不會變色字體也不變。所以很多人才會一臉懵——明明看起來是正常的可編輯單元格為什么一改就報(bào)錯(cuò)這不是你的操作問題是表格的設(shè)計(jì)者給整張表上了鎖。1.2 很容易踩雷的操作清單被保護(hù)的表格里并不是所有操作都會被攔。取決于保護(hù)時(shí)勾選了哪些選項(xiàng)Excel會放行一部分功能攔下另一部分。常見的觸發(fā)“被保護(hù)單元格不支持此功能”的操作有選中一個(gè)或多個(gè)鎖定的單元格輸入或修改內(nèi)容對鎖定區(qū)域做格式調(diào)整比如改字體、顏色、行高列寬插入或刪除行、列合并或取消合并單元格執(zhí)行排序、篩選如果保護(hù)時(shí)沒勾選允許把別處復(fù)制的內(nèi)容粘貼進(jìn)鎖定區(qū)域這些操作的共性在于它們都會改變鎖定單元格本身的狀態(tài)或結(jié)構(gòu)。反過來如果保護(hù)時(shí)勾選了“選定鎖定單元格”這個(gè)選項(xiàng)那至少還可以選中這些格子只是改不了內(nèi)容如果不勾選連選中都選不中點(diǎn)上去跟點(diǎn)了塊木頭一樣。我自己遇到比較多的是兩個(gè)場景一是復(fù)制粘貼明明源數(shù)據(jù)就在那里粘貼卻報(bào)錯(cuò)二是數(shù)據(jù)透視表或公式計(jì)算依賴的源表被鎖想改日期范圍發(fā)現(xiàn)整列都進(jìn)不去。這兩個(gè)場景在HR、財(cái)務(wù)、運(yùn)營的表格流轉(zhuǎn)里尤其常見。1.3 一個(gè)真實(shí)場景收到的半成品表為什么填不進(jìn)去舉個(gè)具體例子。運(yùn)營部門發(fā)來一張?jiān)露葦?shù)據(jù)匯總表說是留了幾個(gè)空位讓大家填渠道數(shù)據(jù)。我打開后發(fā)現(xiàn)A到G列都填好了H列是空的準(zhǔn)備填結(jié)果一敲鍵盤彈窗。檢查了一下發(fā)現(xiàn)整張工作表被保護(hù)H列雖然空著但單元格屬性也是鎖定。填都填不進(jìn)去。這類“只讓你填某幾格”的需求正確做法其實(shí)是后面要講的“允許用戶編輯區(qū)域”或者干脆只鎖有公式的區(qū)域。這里先記住一個(gè)結(jié)論被保護(hù)不代表全表不能動(dòng)能不能動(dòng)取決于單元格鎖定屬性和保護(hù)選項(xiàng)的組合??炊诉@一層后面所有解法都順理成章。2. 有密碼時(shí)的正規(guī)解法2.1 第一步永遠(yuǎn)是撤銷工作表保護(hù)如果你手里有密碼那這事一分鐘就能解決。打開出問題的Excel文件切到“審閱”選項(xiàng)卡找到“撤銷工作表保護(hù)”點(diǎn)一下輸入密碼保護(hù)就沒了。注意是“撤銷工作表保護(hù)”不是“保護(hù)工作簿”這兩個(gè)按鈕在同一個(gè)功能區(qū)里很容易看錯(cuò)。如果密碼是從同事那里拿的輸完密碼后建議順手檢查一下“文件-信息-保護(hù)工作簿”看看里面有沒有“受保護(hù)的工作表”字樣。有的話說明還有工作簿層面的保護(hù)比如結(jié)構(gòu)保護(hù)或只讀密碼那是另一個(gè)維度的問題稍后會單獨(dú)說。另外撤銷保護(hù)之后那些鎖定單元格的屬性并不會自動(dòng)變成“未鎖定”。它們只是暫時(shí)失去了“鎖門”這個(gè)動(dòng)作等下次再次啟用保護(hù)時(shí)又會生效。所以如果制作表格的人想徹底放開某些區(qū)域得去改單元格格式里的鎖定勾選再重新保護(hù)這個(gè)后面第四節(jié)會詳細(xì)講。2.2 撤銷按鈕是灰的多半是工作簿結(jié)構(gòu)保護(hù)有一個(gè)很典型的情況明明知道密碼結(jié)果“撤銷工作表保護(hù)”這個(gè)按鈕是灰色的根本點(diǎn)不了。這不是Excel壞了也不是你權(quán)限不夠而是因?yàn)楫?dāng)前工作表受到了“保護(hù)工作簿”的結(jié)構(gòu)保護(hù)。“保護(hù)工作簿”在這里不是指打開文件要密碼而是指結(jié)構(gòu)保護(hù)防止用戶移動(dòng)、刪除、隱藏工作表。當(dāng)結(jié)構(gòu)保護(hù)啟用時(shí)所有關(guān)于工作表層面的操作都會被鎖死包括撤銷工作表保護(hù)。解法是先解除工作簿結(jié)構(gòu)保護(hù)審閱-保護(hù)工作簿-取消勾選“結(jié)構(gòu)”輸入工作簿級密碼然后再去撤銷工作表保護(hù)。還有更隱蔽的情況有些表格是用VBA代碼在Workbook_Open里寫死了“打開即保護(hù)”的動(dòng)作菜單是恢復(fù)了但宏一運(yùn)行又會自動(dòng)保護(hù)。這時(shí)候先按AltF11打開VBA編輯器把相關(guān)代碼注釋掉再操作。這種情況在企業(yè)模板表里挺多值得排查時(shí)留意。2.3 不想解鎖也能把數(shù)據(jù)弄出來的兩個(gè)技巧如果密碼丟了但只是偶爾需要把數(shù)據(jù)抄出來其實(shí)不一定要先破解保護(hù)兩個(gè)技巧經(jīng)常夠用。第一個(gè)是復(fù)制后選擇性粘貼。如果保護(hù)選項(xiàng)里勾選了“選定鎖定單元格”那就可以選中格子并復(fù)制內(nèi)容只是不能改。復(fù)制出來后粘貼到另一個(gè)空白工作表里用“選擇性粘貼-值”數(shù)據(jù)就搬出來了。雖然原表還是保護(hù)狀態(tài)但你要的數(shù)據(jù)已經(jīng)有了。第二個(gè)是另存為PDF或打印預(yù)覽。表格如果只是用來查看、匯報(bào)、歸檔直接另存為PDF根本不需要打開原表編輯。這種方法在報(bào)表匯總場景特別實(shí)用不需要?jiǎng)釉斫Y(jié)構(gòu)也不會誤觸發(fā)任何保護(hù)。這兩個(gè)技巧治標(biāo)不治本但勝在零風(fēng)險(xiǎn)、不碰任何底層邏輯適合不想折騰、又對Excel不熟的同事先用起來。3. 忘記工作表密碼后的破局方案進(jìn)入正題。忘了工作表保護(hù)密碼怎么辦先說結(jié)論工作表保護(hù)不是強(qiáng)加密破解難度遠(yuǎn)低于文件加密多數(shù)情況自己就能搞定。但請務(wù)必只對“自己創(chuàng)建的文件”或“已獲授權(quán)處理的文件”操作別拿這招去解別人的加密表格。3.1 老版本Excel的VBA哈希碰撞解法Excel 2010及更早版本的工作表保護(hù)密碼在內(nèi)部其實(shí)是存成一個(gè)16位的哈希值算法非常弱密碼長度、每個(gè)字符的ASCII碼參與異或運(yùn)算后得到一個(gè)校驗(yàn)碼。這就意味著可以寫一段VBA窮舉所有可能的字符組合去碰撞這個(gè)哈希值一旦匹配就輸出原始密碼。網(wǎng)上流傳最廣的那段“工作表保護(hù)密碼破解”VBA就是這樣實(shí)現(xiàn)的。它的核心思路是遍歷6位以內(nèi)的字母數(shù)字組合逐個(gè)生成哈希去比對。在Excel 2010上跑快的幾秒慢的也就一兩分鐘。下面貼一個(gè)我個(gè)人整理過注釋的版本Sub UnprotectSheet() Dim Pwd As String On Error Resume Next 先嘗試不輸入密碼直接解除如果保護(hù)沒設(shè)密碼 ActiveSheet.Unprotect If Err.Number 0 Then MsgBox 該表未設(shè)置密碼已直接解除。 Exit Sub End If On Error GoTo 0 無密碼無法直接解除進(jìn)入窮舉流程 BruteForce End Sub Sub BruteForce() Dim i As Integer, j As Integer, k As Integer Dim l As Integer, m As Integer, n As Integer Dim sPwd As String, sChars As String Dim bFound As Boolean 字符集可根據(jù)需要擴(kuò)展注意大小寫敏感 sChars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 bFound False For i 1 To Len(sChars) For j 1 To Len(sChars) For k 1 To Len(sChars) sPwd Mid(sChars, i, 1) Mid(sChars, j, 1) Mid(sChars, k, 1) On Error Resume Next ActiveSheet.Unprotect sPwd If Err.Number 0 Then MsgBox 密碼是: sPwd bFound True Exit Sub End If On Error GoTo 0 Next k If bFound Then Exit Sub Next j If bFound Then Exit Sub Next i MsgBox 未找到可嘗試增加位數(shù)或字符集。 End Sub注意這段代碼在兩個(gè)“On Error”之間判斷Err.Number原理是輸入錯(cuò)誤密碼時(shí)Unprotect會報(bào)錯(cuò)只要闖過Err.Number0這一關(guān)就說明解開了。字符集長度和循環(huán)層數(shù)可以根據(jù)需要擴(kuò)展但記住老版本算法只對2010及之前版本有效2013及之后微軟改了哈希方案窮舉已經(jīng)行不通。有些人電腦上裝的還是老版Excel或者打開的是老格式xls文件這段代碼依然是第一個(gè)值得試的方案省時(shí)省力。3.2 新版Excel刪XML節(jié)點(diǎn)5分鐘移除保護(hù)Excel 2013及以后的工作表保護(hù)用了更嚴(yán)格的哈希算法靠VBA碰撞已經(jīng)沒有可行性。但xlsx/xlsm格式本身是開放的OOXML規(guī)范里面所有保護(hù)信息就是一行XML標(biāo)簽刪掉就完事了。具體操作步驟先把要處理的.xlsx文件復(fù)制一份改后綴名為.zip。用WinRAR、7-Zip或系統(tǒng)自帶的壓縮管理器打開這個(gè)zip包。進(jìn)入 xl 文件夾下的 worksheets 目錄里面每個(gè)sheetX.xml對應(yīng)一張工作表比如sheet1.xml就是第一張表。用記事本或任意文本編輯器打開sheet1.xml搜索“sheetProtection”這個(gè)關(guān)鍵詞。找到類似sheetProtection algorithmNameSHA-512 hashValue一串字符 saltValue一串字符 spinCount100000 sheet1 objects1 scenarios1/這樣的標(biāo)簽整個(gè)刪掉。保存xml文件更新回zip包把后綴名改回.xlsx重新打開。這個(gè)方法的原理很簡單工作表保護(hù)的本質(zhì)就是這一行配置把它移除后Excel打開文件時(shí)發(fā)現(xiàn)沒有保護(hù)聲明自然就放行了。實(shí)測在Excel 2016、2019、2021和Microsoft 365上都能用并且不影響表格里的公式、樣式和數(shù)據(jù)。有幾個(gè)細(xì)節(jié)要留意。一是處理前務(wù)必備份原文件萬一改錯(cuò)了還有退路。二是如果文件設(shè)置了打開密碼這個(gè)方法無效因?yàn)檎麄€(gè)xml都是加密狀態(tài)你根本看不到內(nèi)容那種情況只能用密碼或?qū)I(yè)恢復(fù)工具。三是xls老格式用不了因?yàn)樗皇荗OXML結(jié)構(gòu)要用別的思路。3.3 老格式xls的處理思路如果是Excel 97-2003的.xls文件并且版本又老優(yōu)先用VBA窮舉。如果VBA跑不出結(jié)果字符集太小或密碼太復(fù)雜可以試試把文件另存為xlsx再走XML路線。方法是隨便打開一個(gè)Excel程序用“文件-打開”選擇該xls打開后另存為xlsx再做一遍刪XML節(jié)點(diǎn)操作。這里要額外說明另存為xlsx會改變文件的兼容性一些老版本專屬的功能可能會有變化操作前先備份。萬一備份都沒有文件又打不開那只能上專業(yè)工具了這類工具網(wǎng)上一搜就有原理還是字典和暴力枚舉速度取決于密碼復(fù)雜度和機(jī)器性能。我不在這里推薦具體工具名你自己甄別優(yōu)先挑那些開源的或者口碑明確的別裝來路不明的“破解版”。3.4 別死磕破解重建表格有時(shí)更快還有一種情況不得不提被保護(hù)的表格本身結(jié)構(gòu)不復(fù)雜或者你只是要里面的數(shù)據(jù)那重建一張往往比折騰破解更快。具體做法是新建一個(gè)空白Excel把原表當(dāng)成數(shù)據(jù)源需要的數(shù)據(jù)手動(dòng)或?qū)懝揭^來再按自己的需求重新排版。雖然費(fèi)點(diǎn)時(shí)間但你可以順便清理掉原表里所有公式錯(cuò)誤、空白行和樣式垃圾一次到位。說白了有時(shí)候一張保護(hù)表破起來不到兩分鐘但如果文件里嵌套了多層引用、圖表、透視表或者保護(hù)范圍是多個(gè)工作表聯(lián)動(dòng)那重建代價(jià)就大了。所以兩條路怎么選取決于表的復(fù)雜程度和你對后續(xù)使用的需求沒有絕對標(biāo)準(zhǔn)。唯一的標(biāo)準(zhǔn)是先把數(shù)據(jù)救出來再談格式和結(jié)構(gòu)。4. 設(shè)計(jì)保護(hù)表格的正確姿勢與其每次碰上別人的保護(hù)表去破解不如自己發(fā)出去的表別給接收的人添麻煩。這節(jié)寫給經(jīng)常做表、發(fā)表、收集數(shù)據(jù)的同學(xué)學(xué)完可以讓“被保護(hù)單元格”這個(gè)彈窗在你的表里徹底變成設(shè)計(jì)的一部分而不是事故現(xiàn)場。4.1 保護(hù)粒度只鎖該鎖的區(qū)域單元格的鎖定屬性是逐格設(shè)置的所以完全可以做到“有公式的格子不能動(dòng)填數(shù)據(jù)的格子隨便寫”。方法是先選中所有允許編輯的格子右鍵-設(shè)置單元格格式-保護(hù)-取消勾選“鎖定”然后再去“審閱-保護(hù)工作表”設(shè)置密碼。這樣保護(hù)之后只有沒取消鎖定的格子會被攔用戶就能在允許的范圍內(nèi)自由輸入。我見過很多反例做完一張表怕公式被改直接全表保護(hù)結(jié)果連原始數(shù)據(jù)區(qū)都鎖死了。收表的人打電話來問為什么填不了數(shù)你這邊還得遠(yuǎn)程指導(dǎo)。其實(shí)只鎖公式區(qū)域并不會增加多少工作量反而能省掉大量溝通成本。這個(gè)習(xí)慣建議所有做財(cái)務(wù)模板、銷售明細(xì)、排班表的人都養(yǎng)成。另外“鎖定”旁邊的“隱藏”選項(xiàng)也要知道它控制的是公式是否在編輯欄可見。如果勾選“隱藏”并啟用了保護(hù)用戶點(diǎn)開有公式的單元格時(shí)編輯欄不會顯示公式內(nèi)容。適合那些不想讓別人看到計(jì)算邏輯的表格但要注意公式結(jié)果還是正常顯示的只是看不到公式本身。4.2 允許用戶編輯區(qū)域多人協(xié)作用得上除了手動(dòng)去改每個(gè)單元格的鎖定屬性Excel還提供了一種更高級的機(jī)制允許用戶編輯區(qū)域。在“審閱-允許用戶編輯區(qū)域”里可以給某個(gè)區(qū)域單獨(dú)設(shè)置密碼然后即使工作表被保護(hù)擁有這個(gè)區(qū)域密碼的人也能編輯該區(qū)域而其他區(qū)域還是鎖的。這個(gè)功能在多人協(xié)作收集數(shù)據(jù)時(shí)特別好用。比如一張部門預(yù)算表財(cái)務(wù)部設(shè)置好公式和匯總邏輯然后把“銷售部填寫區(qū)”“市場部填寫區(qū)”分別設(shè)置獨(dú)立密碼分發(fā)給相應(yīng)負(fù)責(zé)人。銷售部和市場部的人只能改自己那幾列填完以后公式照常匯總結(jié)構(gòu)不會被破壞。操作路徑審閱-允許用戶編輯區(qū)域-新建選定區(qū)域、設(shè)置標(biāo)題和密碼確定后再去保護(hù)工作表。注意允許用戶編輯區(qū)域不是嚴(yán)格意義上的權(quán)限管理如果整個(gè)工作簿通過網(wǎng)絡(luò)共享給很多人密碼就形同虛設(shè)。這個(gè)功能更適合本地分發(fā)或內(nèi)部協(xié)作。4.3 保護(hù)選項(xiàng)里的每個(gè)勾選都有講究點(diǎn)開“保護(hù)工作表”窗口時(shí)下面一大串允許項(xiàng)很多人直接忽略默認(rèn)值。其實(shí)這些選項(xiàng)決定了保護(hù)之后別人還能做什么。常用的幾個(gè)選定鎖定單元格默認(rèn)勾選。如果取消用戶連鎖定的格子都點(diǎn)不中。選定未鎖定單元格默認(rèn)勾選。這個(gè)建議保持不然用戶連允許編輯的區(qū)域都進(jìn)不去。設(shè)置單元格格式默認(rèn)不勾選。如果勾上用戶雖然不能改內(nèi)容但能調(diào)樣式常見于只防內(nèi)容防不住排版的場景。插入行/插入列、刪除行/刪除列默認(rèn)不勾選。需要開放時(shí)再勾。排序、使用自動(dòng)篩選默認(rèn)不勾選。如果表是共享填報(bào)后匯總的場景這兩項(xiàng)勾上能省很多事。編輯對象和編輯方案涉及圖表、圖形按需開放。我的建議是做填報(bào)表時(shí)至少勾選“選定未鎖定單元格”做計(jì)算表時(shí)保持默認(rèn)關(guān)閉“設(shè)置單元格格式”如果是不希望別人動(dòng)結(jié)構(gòu)但可以篩選查看的大表把“排序”和“自動(dòng)篩選”勾上用戶體驗(yàn)會好非常多。這些細(xì)項(xiàng)看似不起眼但決定了收表人看到的是“順手能用的表”還是“每步都被彈窗懟回來的表”。4.4 表格發(fā)出去之前的自查清單最后分享一個(gè)我自己的習(xí)慣任何要發(fā)給別人的Excel發(fā)出去之前都先走一遍“陌生人視角”檢查。我會用一個(gè)不加載宏、干凈的Excel打開它把允許用戶輸入的每個(gè)格子都試敲一遍試一下復(fù)制粘貼、加一行、篩選確認(rèn)沒有意外彈窗再發(fā)出去。如果表格內(nèi)容比較重要建議同時(shí)做兩件事另存一個(gè)“供填寫版”打開時(shí)提示保護(hù)和一個(gè)“只讀版”PDF或禁編輯分別應(yīng)對收集數(shù)據(jù)和歸檔查閱兩種場景。分發(fā)后定期檢查一下反饋如果有人還是反饋“被保護(hù)單元格不支持此功能”多半是我哪里沒放開先讓ta把操作截圖發(fā)過來再回過頭看保護(hù)設(shè)置比遠(yuǎn)程猜來猜去快得多。5. 高頻問題排查與避坑實(shí)錄5.1 按這個(gè)順序排查少走一半彎路碰到“被保護(hù)單元格不支持此功能”彈窗時(shí)按下面順序排查比挨個(gè)試快得多看“審閱”選項(xiàng)卡里“撤銷工作表保護(hù)”是不是可點(diǎn)擊狀態(tài)??牲c(diǎn)擊說明就是這個(gè)工作表的保護(hù)問題知道密碼直接解不知道密碼跳到下一步。如果按鈕是灰色的查“保護(hù)工作簿”或“信息-保護(hù)工作簿”是否啟用是的話先解除工作簿結(jié)構(gòu)保護(hù)。檢查是否是受保護(hù)的視圖導(dǎo)致。從網(wǎng)絡(luò)、郵箱附件打開的Excel可能進(jìn)入受保護(hù)視圖此時(shí)整個(gè)文件只讀需要點(diǎn)擊“啟用編輯”。看是否因?yàn)槲募?biāo)記為“以副本方式打開”或打開時(shí)處于只讀狀態(tài)這種是文件屬性問題和單元格保護(hù)兩碼事。最后再看有沒有VBA宏在打開文件時(shí)自動(dòng)做了保護(hù)和禁用操作這類在企業(yè)模板里更常見。排查完基本就定位了。大部分情況在第1和第3步就能解決真正需要上XML刪節(jié)點(diǎn)的比例其實(shí)不高。5.2 高頻問題速查表這里整理一張我在答疑時(shí)經(jīng)常用到的速查表遇到類似癥狀可以直接對照癥狀可能原因最快處理輸入內(nèi)容彈“被保護(hù)單元格”單元格鎖定工作表保護(hù)撤銷工作表保護(hù)或改鎖定屬性想復(fù)制但總是粘貼失敗粘貼目標(biāo)區(qū)域是鎖定的選擇性粘貼“值”到空白區(qū)域撤銷工作表保護(hù)是灰色工作簿結(jié)構(gòu)保護(hù)被開啟先取消保護(hù)工作簿結(jié)構(gòu)所有單元格都點(diǎn)不中保護(hù)時(shí)沒勾選“選定鎖定單元格”解除保護(hù)后重新設(shè)置選項(xiàng)打開文件只讀啥都不能改受保護(hù)視圖或文件只讀屬性點(diǎn)擊“啟用編輯”或去掉只讀屬性有公式的格子看不到公式單元格隱藏保護(hù)開啟解除保護(hù)后取消隱藏保護(hù)密碼忘了版本較老或xlsx格式VBA窮舉或刪XML節(jié)點(diǎn)這張表解決了我這邊80%以上的Excel保護(hù)問題。如果不在表里再結(jié)合具體操作排查。5.3 幾個(gè)容易被漏掉的細(xì)節(jié)最后補(bǔ)充幾個(gè)我自己踩過的小坑。第一個(gè)“鎖定”和“保護(hù)”是疊加生效的。只改鎖定屬性不保護(hù)白改只保護(hù)不鎖定也是白保護(hù)。很多人單獨(dú)操作了一邊就以為設(shè)置了保護(hù)結(jié)果數(shù)據(jù)照樣被改排查半天才發(fā)現(xiàn)是兩邊沒對上。第二個(gè)單元格區(qū)域里的格式復(fù)制會連帶鎖定屬性一起復(fù)制。比如你用格式刷把一個(gè)未鎖定的格子刷到一個(gè)鎖定格子上格式是變了但鎖定屬性會被覆蓋。所以做完模板后建議用“全選-設(shè)置單元格格式-保護(hù)”檢查一遍確認(rèn)每個(gè)區(qū)域?qū)傩苑项A(yù)期。第三個(gè)Excel的撤銷工作表保護(hù)密碼和文件打開密碼是完全兩碼事。如果在“信息-保護(hù)工作簿”里看到加密那說明文件本身有打開密碼這個(gè)不是靠刪XML能解決的必須靠輸入密碼或?qū)iT工具。第四個(gè)跨版本打開文件也會引發(fā)一些保護(hù)相關(guān)的坑。比如同一個(gè)文件在Excel 2010里設(shè)置的保護(hù)用Excel 365打開界面上的選項(xiàng)、提示可能有差異老版本里勾的保護(hù)選項(xiàng)在新版本里不一定完全等價(jià)。處理方案是老版本文件盡量先用老版本編輯或者先另存為xlsx再調(diào)整保護(hù)設(shè)置。再說一個(gè)實(shí)操層面的經(jīng)驗(yàn)與其糾結(jié)怎么解不如花30秒判斷這個(gè)文件有沒有必要解。如果只是為了用里面的某個(gè)公式或者某段數(shù)據(jù)復(fù)制出來重建一個(gè)干凈文件比和加密保護(hù)斗智斗勇省心得多。我見過太多同事花一下午研究怎么破解一張其實(shí)已經(jīng)用不到的表最后發(fā)現(xiàn)只是需要里面的一個(gè)電話列表導(dǎo)出來幾分鐘就搞定了。我個(gè)人在實(shí)際操作中的體會是Excel的保護(hù)功能本來是用來保護(hù)數(shù)據(jù)的而不是用來添堵的。碰上一次彈窗不可怕把這個(gè)彈窗背后的邏輯搞清楚以后無論是自己解保護(hù)、還是給別人做可以填寫的表都會順手很多。如果你也經(jīng)常做表發(fā)出去真心建議試試我上面說的“只鎖公式區(qū)域允許用戶編輯區(qū)域”的組合接收方的體驗(yàn)會完全不一樣。最后再分享一個(gè)小技巧如果哪天你收到一張保護(hù)表又急用里面的數(shù)據(jù)別急著破解先試試能不能直接復(fù)制數(shù)據(jù)單元格的內(nèi)容——很多表保護(hù)時(shí)勾選了“選定鎖定單元格”數(shù)據(jù)其實(shí)是能選中的只是不能改而已。很多時(shí)候一個(gè)“選擇性粘貼”就解決了。