使用Dirfind没有“AAA”的文件

我有一些称为Team-(Random Number).txt的文件。

Dir("Team-" & "*" & ".txt") 

但是,当有更改时,可能会有称为Team-(随机数)-AAA.txt,Team-(随机数)-AAB.txt等的文本文件,但是最近的文件总是被称为Team-(随机数)。文本。

由于Dir只返回1个文件,这是随机的有办法得到文件Team-(Random Number).txt?

如果dir以正常的顺序返回结果,应该没有问题,但显然是随机的。

我曾想过排除-AAA部分,但不知道语法应该如何。 或者以一种效率较低的方式获取所有文件并将其sorting在一个数组中,但使用10 – 200个文件,效率不高。

现在我希望能给我排除部分或其他解决方法,我的问题的语法谢谢!

我会说去正则expression式。

 Private Sub TeamTxtExists() Dim Path As String, Pattern As String, FileFound As String Dim REGEX As Object, Matches As Object Dim oFSO As Object, oFolder As Object, oFile As Object Path = "D:\Personal\Stack Overflow\" 'Modify as necessary. Pattern = "(Team-(\d+).txt)" Set REGEX = CreateObject("VBScript.RegExp") With REGEX .Pattern = Pattern .Global = True .IgnoreCase = True End With Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFolder = oFSO.GetFolder(Path) For Each oFile In oFolder.Files Set Matches = REGEX.Execute(oFile.Name) For Each Match In Matches Debug.Print Match.Value Next Match Next oFile End Sub 

这将在您的立即窗口(VBE中的Ctrl-G)中打印文件名中没有AAA或类似名称的文本文件的所有名称。 尝试和testing。

以类似的方式循环使用VBA文件夹中的文件?

  1. 使用Dir有效地查找与team-xxxx.txt匹配的第一组文件
  2. 然后在可能要做的通缉的匹配零
    • Like简单的比赛
    • Regexp更难匹配
  3. 退出成功匹配的Dir列表

我去了正则expression式。

  Sub LoopThroughFiles() Dim objRegex As Object Dim StrFile As String Dim bFound As Boolean bFound = False Set objRegex = CreateObject("VBScript.RegExp") objRegex.Pattern = "team-\d+" StrFile = Dir("c:\temp\team-*.txt") Do While Len(StrFile) > 0 If objRegex.test(StrFile) = False Then StrFile = Dir Else bFound = True MsgBox "Your file is " & StrFile Exit Do End If Loop If Not bFound Then MsgBox "No Match", vbCritical End Sub 

这帮忙吗?

Dir("Your_folder_path_ending_with_a_\" & "Team-(*).txt")

更深入一点,使用图片中显示的文件夹内容:

在这里输入图像说明

这个子将返回所有只包含“Team-(Random Number).txt”的文件名:

 Sub showFileName() Dim FolderPath As String: FolderPath = "C:\test\" Dim Filter As String: Filter = "Team-(*).txt" Dim dirTmp As String dirTmp = Dir(FolderPath & Filter) Do While Len(dirTmp) > 0 Debug.Print dirTmp dirTmp = Dir Loop End Sub 

结果是:
Team-(123)的.txt
Team-(14)的.txt
Team-(PI)的.txt