📜  vba 循环遍历文件夹中的文件 - VBA (1)

📅  最后修改于: 2023-12-03 15:35:34.560000             🧑  作者: Mango

使用 VBA 循环遍历文件夹中的文件

在 VBA 中,可以使用 FileSystemObject 对象来访问和操作文件系统中的文件和文件夹。使用循环遍历这些文件和文件夹也很简单,下面是一些示例代码和解释。

首先,需要创建一个 FileSystemObject 对象
Dim fso As FileSystemObject
Set fso = New FileSystemObject
遍历文件夹中的所有文件
Sub ListFilesInFolder(ByVal folderPath As String)
    Dim fso As FileSystemObject
    Dim folder As folder
    Dim file As file
    
    Set fso = New FileSystemObject
    
    Set folder = fso.GetFolder(folderPath)
    
    For Each file In folder.Files
        Debug.Print file.Path
    Next file
End Sub
  • 这个 Sub 程序获取 folderPath 中的所有文件,并在调试窗口中打印每个文件的全路径 file.Path
  • FileSystemObjectGetFolder 方法将一个字符串路径转化为一个 Folder 对象。
  • Folder 对象的 Files 属性是一个 Files 集合,包括该文件夹中的所有文件对象。
  • 使用 For Each...Next 语句迭代集合并处理每个文件。
遍历文件夹中的所有子文件夹和文件
Sub ListFoldersAndFilesInFolder(ByVal folderPath As String)
    Dim fso As FileSystemObject
    Dim folder As folder
    Dim subFolder As folder
    Dim file As file
    
    Set fso = New FileSystemObject
    
    Set folder = fso.GetFolder(folderPath)
    
    For Each subFolder In folder.SubFolders
        ListFoldersAndFilesInFolder subFolder.Path
    Next subFolder
    
    For Each file In folder.Files
        Debug.Print file.Path
    Next file
End Sub
  • 这个 Sub 程序递归地获取 folderPath 中的所有子文件夹和文件,并在调试窗口中打印每个文件的全路径 file.Path
  • Folder 对象的 SubFolders 属性是一个 Folders 集合,包括该文件夹中的所有子文件夹对象。
  • 递归地调用 ListFoldersAndFilesInFolder Sub 程序获取每个子文件夹中的文件和文件夹,并处理它们。
过滤文件

上面两个 Sub 程序获取了所有文件和文件夹,但在某些情况下,我们只需要处理某些类型的文件。使用 FileSystemObject 对象的 GetExtensionNameFileExists 方法可以很容易地过滤文件。

Sub ListFilteredFilesInFolder(ByVal folderPath As String, ByVal extension As String)
    Dim fso As FileSystemObject
    Dim folder As folder
    Dim file As file
    
    Set fso = New FileSystemObject
    
    Set folder = fso.GetFolder(folderPath)
    
    For Each file In folder.Files
        If fso.GetExtensionName(file.Path) = extension And fso.FileExists(file.Path) Then
            Debug.Print file.Path
        End If
    Next file
End Sub
  • 这个 Sub 程序获取所有拓展名为 extension 的文件,并在调试窗口中打印每个文件的全路径 file.Path
  • FileSystemObjectGetExtensionName 方法获取指定文件的拓展名。
  • FileSystemObjectFileExists 方法判断一个文件是否存在。
总结

以上就是使用 VBA 循环遍历文件夹中的文件的一些示例代码和解释。这些代码可以简化文件和文件夹的处理和管理任务。