1

所以基本上意图是在目录中使用 VBA dir 函数,获取该目录中的文件名,但避免/过滤掉获得某个扩展名。例如,我想获取目录中不是“*.txt”之类的所有文件。我强烈希望使用 dir 函数而不是其他一些解决方案,因为与我尝试过的任何其他方法相比,它似乎在获取文件列表方面更加高效/快速。

例如,类似 Dir("Path" & " " & <> " .txt")。但是你知道……一些有效的东西。哈哈。

我当然可以在事后进行检查以跳过任何带有 .txt 扩展名的内容(拆分字符串或其他内容),但我想知道是否有更优雅/资源效率更高的东西可以与 Dir 的语法一起使用功能以避免具有特定扩展名的文件。

提前致谢!

4

1 回答 1

2
Dim Files As Collection
Set Files = GetFilesIn("C:\")            'gets all the files
Set Files = GetFilesIn("C:\", "*.txt")   'gets all the txt files
Set Files = GetFilesIn("C:\", , "*.txt") 'gets all but the txt files

Function GetFilesIn(Folder As String, Optional Matching As String, Optional Unmatching As String) As Collection
  Dim FName As String
  Set GetFilesIn = New Collection
  If Matching = "" Then
    FName = Dir(Folder)
  Else
    FName = Dir(Folder & Matching)
  End If
  Do While FName <> ""
    If Unmatching = "" Then
      GetFilesIn.Add Folder & FName
    Else
      If Not FName Like Unmatching Then GetFilesIn.Add Folder & FName
    End If
    FName = Dir
  Loop
End Function
于 2013-06-18T19:58:38.293 回答