专治同事的拖延症! Excel文件到期自动销毁的技巧
大家好,今天跟大家分享下我们如何在Excel中实现,数据到期后自动消失的效果,在这里跟大家分享2种解决方法,一种是利用vba代码,另一种是利用条件格式,它们的操作也都非常简单,对照操作都可以设置成功,下面就让我们来学习下吧
一、VBA代码
首先我们需要复制下方的代码,然后点击【开发工具】找到【Visual Basic】在跳出的界面中我们双击最下方的【ThisWorkbook】,然后将代码直接粘贴在右侧的空白区域中,然后将这个界面关闭掉即可,至此就设置完毕了.
Private Sub Workbook_Open()
Application.DisplayAlerts = False
If Date = "2021/9/10" Then Sheets("sheet2").Delete
Application.DisplayAlerts = Tru
End Sub
这个代码的作用是将于2021年9月10号删除sheet2这个工作表。需要注意的是sheet2是VB界面中的名称,也就是工作表最原始的名称。如下图,我们可以看到Sheet2(销毁数据),所以在这里才会在Sheets("sheet2").Delete这行代码中出现sheet2,而不是【销毁数据】这个工作表名称。至于数据何时消失,我们只需要更改2021/9/10这个日期的值即可。

最后需要注意的是我们需要将文件另存为可以保存宏代码的格式,一般是另存为【xlsm】格式。这个方法也有一定的缺陷,现在很多公司在安全策略上都已经禁止电脑运行宏,如果存在这样的情况,文件有打不开的可能性。
注意:下面这段代码比较适合Excel用户,默认支持VBA代码,打开文件会弹出文件还有多久到期,当文件到期时会给出弹出,整个Excel工作簿会被删掉。
Private Sub Workbook_Open() ' 设置开始日期和有效期天数 Dim startDate As Date Dim validDays As Integer ' 在这里设置开始日期和有效期(天数) startDate = #5/12/2025# ' 格式为#月/日/年# validDays = 30 ' 文件有效天数 ' 计算到期日期 Dim expiryDate As Date expiryDate = DateAdd("d", validDays, startDate) ' 获取当前日期 Dim currentDate As Date currentDate = Date ' 计算剩余天数 Dim daysRemaining As Integer daysRemaining = DateDiff("d", currentDate, expiryDate) ' 检查是否已过期 If daysRemaining <= 0 Then ' 文件已过期,显示提示并安排删除文件 MsgBox "此文件已过期,系统将自动删除该文件。", vbCritical, "文件已过期" ' 获取当前文件的完整路径 Dim filePath As String filePath = ThisWorkbook.FullName ' 创建临时VBScript来删除文件 CreateDeleteScript filePath ' 关闭当前工作簿 ThisWorkbook.Saved = True ' 防止保存提示 Application.DisplayAlerts = False ' 禁用警告 ThisWorkbook.Close False ' 退出Excel Application.Quit Else ' 文件未过期,显示剩余天数 MsgBox "此文件将在 " & daysRemaining & " 天后过期。" & vbCrLf & _ "到期日期: " & Format(expiryDate, "yyyy年mm月dd日"), _ vbInformation, "文件有效期提醒" End If End Sub ' 创建用于删除文件的VBScript Private Sub CreateDeleteScript(filePath As String) Dim scriptContent As String Dim scriptPath As String Dim fso As Object Dim scriptFile As Object ' VBScript内容 - 等待Excel关闭后删除文件 scriptContent = "On Error Resume Next" & vbCrLf & _ "Dim fso, wsh" & vbCrLf & _ "Set fso = CreateObject(""Scripting.FileSystemObject"")" & vbCrLf & _ "Set wsh = CreateObject(""WScript.Shell"")" & vbCrLf & _ "' 等待5秒确保Excel已关闭" & vbCrLf & _ "WScript.Sleep 5000" & vbCrLf & _ "' 尝试删除文件" & vbCrLf & _ "If fso.FileExists(""" & filePath & """) Then" & vbCrLf & _ " fso.DeleteFile """ & filePath & """, True" & vbCrLf & _ "End If" & vbCrLf & _ "' 删除自身" & vbCrLf & _ "fso.DeleteFile WScript.ScriptFullName, True" & vbCrLf & _ "Set fso = Nothing" & vbCrLf & _ "Set wsh = Nothing" ' 获取临时文件夹路径 Set fso = CreateObject("Scripting.FileSystemObject") scriptPath = fso.GetSpecialFolder(2) & "\DeleteExcelFile.vbs" ' 创建VBScript文件 Set scriptFile = fso.CreateTextFile(scriptPath, True) scriptFile.Write scriptContent scriptFile.Close ' 执行VBScript Shell "wscript.exe """ & scriptPath & """", vbHide ' 清理对象 Set scriptFile = Nothing Set fso = Nothing End Sub
二、条件格式法
条件格式这个方法相对于VBA,它并不是将数据删除了,而是为数据设置了格式,将其看不到罢了,因为数据还存在,所以我们需要对单工作表设置保护,防止数据到期后还能继续使用。
excelxian'din件格式的特点是:当条件成立就运行我们设置的格式,条件不成立就不做任何更改。所以条件格式能否成功的关键就是条件如何设置。
首先我们选择需要设置的数据区域。然后找到【条件格式】选择【新建规则】点击【使用公式确定要设置的格式】随后在下方将公式设置为:=TODAY()>44449,然后点击【格式】在【数字】中找到【自定义】将类型设置为;;;需要注意的是这3个分号,需要在英文输入法下输入。

在这里today函数的作用是获取当天的日期,44449就是2021/9/10对应的数值,这个函数的意思就是:今天的时间大于2021年9月10号就代表条件成立,运行我们设置的格式。在这里我们将格式设置为了3个分号,这样的话单元格就会不显示任何内容,但是这些数据其实还是存在的,点击数据的时候,在编辑栏是可以看到数据的,所以紧接着我们就需要为表格设置保护了。

三、设置保护
这个就比较简单了,我们只需要选择点击点击【审阅】找到【工作表保护】将【选定锁定单元格】与【选定解除锁定的单元格】的对勾去掉,然后设置一个密码,这样的话就无法选中单元格,无法选中单元格也就不能在编辑栏中看到数据了,同样也无法复制数据了,至此设置完毕。

以上就是今天分享的2种方法,你更喜欢使用那一种方法呢?
相关文章

excel如何筛选最晚时间的记录? 一对多匹配结果中查找出日期最晚的技巧
如果查找结果有多个匹配值,如何返回日期最晚的那一项?今天教两个公式可以完美解决这个问题,详细请看下文介绍2025-01-03
合同时间到期自动提醒怎么实现? excel中Today函数做倒计时的技巧
公司人很多,经常有合同到期续签问题,我们需要随时了解当前时间哪些合同是属于接近到期或者是已经到期,以便我们及时进行客户跟进,下面我们就来看看excel做到期提醒的方2024-11-19
excel怎么实现表格时间到了自动变色? excel超过固定天数自动变色教程
excel表格中可以根据要求用户需要设置日期超过固定天数自动变色的效果,该怎么实现这个效果呢?下面我们就来看看详细的教程2024-09-12
如何自动生成连续日期? excel自动生成连续时间段的多种教程
在Excel中,自动生成日期是提高工作效率和确保准确时间记录的重要一环,本教程将深入介绍如何使用Excel日期函数和技巧,使您能够轻松自动生成日期,避免手动输入日期的繁琐2024-09-09
时间格式00:00:00怎么转换为分钟? excel将时间转换成小时分钟技巧
在Excel中处理时间数据时,将时分秒快速转换成分钟数是一个常见的需求,这里为大家介绍三种将时分秒时间数据转化为分钟数的方法2024-09-09
如何用excel自动记录数据录入时间? excel自动生成记录时间的技巧
如何用excel自动记录数据录入时间?excel表格输入数据的时候如果能自动记录录入数据的时间就好了,下面我们就来看看excel自动生成记录时间的技巧2023-09-20
Excel时间信息怎么转换成小时? Excel时间转换成小时格式的技巧
Excel时间信息怎么转换成小时?execl表格中显示的是时间数据,想要转换成对应的小时,该怎么操作呢?下面我们就来来看看Excel时间转换成小时格式的技巧2023-07-03
excel如何计算毛重和皮重的时间间隔 excel计算毛重和皮重时间间隔方法
在日常工作中经常会到用excel,有时需要计算毛重和皮重的时间间隔,具体的计算方式是什么,一起来了解一下吧2022-08-01
Excel表格怎么单独提取时间中的小时 Excel表格提取小时数值的方法
们经常会在Excel表格中录入时间,而不少用户在使用的时候又需要单独提取小时,那么具体怎么操作呢?下面小编就带着大家一起看看吧2022-04-11
Excel怎么计算两个日期间的时间差 Excel计算日期时间差的方法
在日常工作中经常会用到Excel表格,有时需要计算表格中两个日期的时间差,手动计算肯定耗时费力,有什么好的办法呢?一起来了解一下吧2022-04-11






最新评论