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
相关产品推荐
相关产品推荐

