You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA代码问题:修改系统日期后无法删除前日版本文件

解决修改系统日期后自动删除前日Unsuppression文件的问题

原代码仅针对当日生成的Unsuppression_dd.MM_XX.txt文件做版本迭代和旧文件清理,当修改系统日期后,前日的同前缀文件会被遗留。要实现修改日期后自动删除前日相关文件,需要在每次运行代码时,先清理目标文件夹内所有非当日日期的Unsuppression_*.txt文件,以下是修改后的完整代码:

Sub StackOverfolow_UpdatetextfilewithVersion()
    ' 定义基础文件夹路径
    Dim baseFolder As String
    baseFolder = "C:\Users\kbkmth\Desktop\SIM_macro\New exp\"
    
    ' 定义当日日期格式字符串(用于匹配当日文件)
    Dim todayDateStr As String
    todayDateStr = Format(Date, "dd.MM")
    
    ' --- 新增:删除所有非当日的Unsuppression文件 ---
    Dim oldFile As String
    ' 匹配所有Unsuppression开头的txt文件
    oldFile = Dir(baseFolder & "Unsuppression_*.txt")
    Do While oldFile <> ""
        ' 提取文件名中的日期部分(Unsuppression_后第1位到第5位为dd.MM)
        Dim fileDateStr As String
        fileDateStr = Mid(oldFile, 15, 5)
        ' 如果文件日期与当日不符,执行删除
        If fileDateStr <> todayDateStr Then
            Application.Wait Now + TimeValue("00:00:00.5") ' 短延迟避免文件占用
            Kill baseFolder & oldFile
        End If
        ' 遍历下一个文件
        oldFile = Dir
    Loop
    
    ' 定义当日文件的基础路径
    Dim folderPath As String
    folderPath = baseFolder & "Unsuppression_" & todayDateStr & "_"
    
    ' 定义要复制的单元格区域
    Dim copyRange As Range
    Set copyRange = ThisWorkbook.Sheets("Sheet1").Range("H2:H8")
    
    ' 将区域值存入数组
    Dim valuesArray As Variant
    valuesArray = copyRange.Value
    
    Dim versionNumber As Integer, aTxt
    Dim fName As String
    versionNumber = 1
    
    ' 检查当日是否已有版本文件,清理并递增版本号
    fName = Dir(folderPath & "*.txt")
    If Len(fName) > 0 Then
        Application.Wait Now + TimeValue("00:00:01") ' 1秒延迟避免文件占用
        Kill baseFolder & fName
        aTxt = Split(fName, "_")
        ' 提取版本号并递增
        versionNumber = CInt(Left(aTxt(UBound(aTxt)), 2)) + 1
    End If
    
    ' 创建并写入新的版本文件
    Dim fileNumber As Integer
    fileNumber = FreeFile
    Open folderPath & Format(versionNumber, "00") & ".txt" For Output As fileNumber
    
    For i = 1 To UBound(valuesArray, 1)
        Print #fileNumber, valuesArray(i, 1)
    Next i
    
    Close fileNumber
End Sub

关键改动说明

  • 新增非当日文件清理逻辑:通过Dir遍历所有同前缀文件,提取文件名中的日期段与当日日期对比,不匹配则直接删除,确保仅保留当日的文件。
  • 统一路径定义:将基础文件夹路径提前定义,避免重复写路径导致的错误。
  • 优化延迟设置:删除非当日文件时用0.5秒短延迟,在避免文件占用问题的同时提升运行效率。

内容的提问来源于stack exchange,提问作者Kuldeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 06:06:01