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