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

VBA遍历不连续序列文件:跳过缺失文件及忽略日期后缀

解决VBA采集数据时跳过缺失文件、忽略日期后缀的问题

针对你的需求,修改后的代码如下,同时解决了文件缺失中断、日期后缀匹配的问题:

Sub proto()
    Dim filePattern As String
    Dim matchedFile As String
    Dim i As Integer
    
    Const DOSSIER = "C:\temp\FOLDER\"
    Const chemin1 = "PROJECT-  "
    
    ' 循环遍历1到250的编号
    For i = 1 To 250
        ' 构建匹配模式:允许编号后接任意字符(包括日期后缀)
        filePattern = DOSSIER & chemin1 & i & "*.xlsm"
        ' 查找第一个匹配的文件
        matchedFile = Dir(filePattern)
        
        ' 如果找到匹配文件
        If matchedFile <> "" Then
            ' 直接给单元格赋值公式,避免Select/ActiveCell提升效率
            Range("B" & i).Formula = "='" & DOSSIER & "[" & matchedFile & "]Sheet1'!K30"
            Range("C" & i).Formula = "='" & DOSSIER & "[" & matchedFile & "]Sheet2'!K92"
        Else
            ' 文件不存在时,清空对应单元格(可选操作,可根据需求调整)
            Range("B" & i & ":C" & i).ClearContents
        End If
    Next i
End Sub

关键修改说明

  • 匹配日期后缀:用chemin1 & i & "*.xlsm"作为文件匹配模式,*通配符可以匹配编号后任意字符(包括ddmmyyyy格式的日期后缀,比如PROJECT- 1_05102024.xlsm或PROJECT- 1-05102024.xlsm都能被匹配)
  • 跳过缺失文件:通过Dir(filePattern)检查是否存在匹配文件,返回空字符串则说明无对应文件,直接跳过赋值步骤
  • 优化单元格操作:移除Select和ActiveCell,直接定位目标单元格赋值,避免界面闪烁且提升代码稳定性
  • 可选处理:文件不存在时清空对应单元格,若不需要可删除Else块内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:55:10