Excel 用于字符数的VBA通配符

Excel 用于字符数的VBA通配符,excel,vba,Excel,Vba,我试图打开一个基于通配符的文件,但它的行为与我预期的不同。文件夹中有两个名称相似的文件。这些名称是“abc_abc1234561_123456_123456”和“abc_abc1234561_123456_1234”。名称非常相似,但我总是想打开第三个下划线后有6位数字的名称 Sub Compile_Results(tasklist As String) strFilePath = "\Documents\" 'loop through fi

我试图打开一个基于通配符的文件,但它的行为与我预期的不同。文件夹中有两个名称相似的文件。这些名称是“abc_abc1234561_123456_123456”和“abc_abc1234561_123456_1234”。名称非常相似,但我总是想打开第三个下划线后有6位数字的名称

Sub Compile_Results(tasklist As String)
    
    strFilePath = "\Documents\"
   
    'loop through files
    For i = 1 To 3
        'open each plate file
        sFound = Dir(strFilePath & "abc_" & tasklist & i & "_??????_??????.xls")
        If sFound <> "" Then
            Workbooks.Open filename:=strFilePath & sFound
            MsgBox (sFound)
            Workbooks(sFound).Close SaveChanges:=False
        End If
    Next i

End Sub

这是可行的,但我仍然不确定为什么通配符不起作用。

您可以测试最后一部分的长度:

sFound = "abc_abc1234561_123456_123456.xls"


sFound = Replace(sFound, ".xls", "")
arr = Split(sFound, "_")
If Len(arr(UBound(arr))) = 6 Then
    '  here enter your Open coding
End If

这些通配符是否工作得更好一些:
Dir(strFilePath和“abc”&tasklist和i&“uku”#u35;##.xl*”
?到底是什么问题?它选择了4位文件还是根本不选择文件?当前的问题是它选择了4位文件。当我使用#通配符时,我没有结果。@VictorK我不相信
Dir
支持使用
#
。我一直在尝试不同的事情,并且当文件被重命名时“abc.abc123456.123456.123456”通过将“”替换为“.”和搜索字符串
“abc.&tasklist&i&&“????????.xls”
它选择了正确的文件。_u326;是否有问题?我认为这是问题的原因。我可能在这里出错,但不会阻止它选择错误的文件(4位数字)但它也不会选择正确的吗?@MatthewEdmond它只会选择最后一部分(介于最后下划线和.xls之间的部分)正好是6个字符长。如果这不是你想要的,那么忽略我的答案。你完全正确。我不明白Dir可以返回多个结果。因此这让我走上了正确的轨道。我添加了一个循环来遍历Dir的结果。
sFound = "abc_abc1234561_123456_123456.xls"


sFound = Replace(sFound, ".xls", "")
arr = Split(sFound, "_")
If Len(arr(UBound(arr))) = 6 Then
    '  here enter your Open coding
End If