返回

如何使用 VBA 快速提取文件夹内所有文件名

Excel技巧

在日常办公中,我们经常需要对文件夹中的文件进行管理,例如提取文件名、统计文件数量、复制或移动文件等。如果文件夹中包含大量文件,手动提取文件名可能会非常耗时。此时,我们可以借助 VBA 来快速完成此任务。

下面我们将介绍如何使用 VBA 提取文件夹内所有文件名,包括子文件夹内的文件。

首先,我们需要创建一个新的 VBA 模块。在 Excel 中,您可以通过以下步骤创建 VBA 模块:

  1. 按下 Alt+F11 快捷键打开 VBA 编辑器。
  2. 在菜单栏中,单击“插入”>“模块”。

接下来,我们将编写 VBA 代码来提取文件夹内所有文件名。代码如下:

Sub GetFilesInFolder(folderPath As String)
    Dim files As New Collection
    GetFilesInFolderRecursive files, folderPath
    For i = 1 To files.Count
        Debug.Print files(i)
    Next i
End Sub

Sub GetFilesInFolderRecursive(files As Collection, folderPath As String)
    Dim fso As New FileSystemObject
    Dim folder As Folder
    Dim file As File
    Dim subfolder As Folder

    Set folder = fso.GetFolder(folderPath)

    For Each file In folder.Files
        files.Add file.Name
    Next file

    For Each subfolder In folder.SubFolders
        GetFilesInFolderRecursive files, subfolder.Path
    Next subfolder
End Sub

在上面的代码中,我们定义了一个名为 GetFilesInFolder 的子过程,该子过程接受一个文件夹路径作为参数,并返回该文件夹内所有文件的文件名。

我们还定义了一个名为 GetFilesInFolderRecursive 的子过程,该子过程使用递归的方式来遍历文件夹内的所有子文件夹,并提取所有文件的文件名。

要使用上面的代码,您可以执行以下步骤:

  1. 将上面的代码复制到 VBA 模块中。
  2. 在 Sub GetFilesInFolder 子过程的 folderPath 参数中指定要提取文件名的文件夹路径。
  3. 按下 F5 快捷键运行代码。

代码运行后,所有文件名将输出到 VBA 编辑器的立即窗口中。

希望本文对您有所帮助。如果您有任何问题,请随时提问。