Excel文件目录抓取器

Excel文件目录抓取器,excel,vba,directory,Excel,Vba,Directory,目前,我有一个用于索引文件夹的工作簿,您可以在其中输入文件夹路径,例如“Z:\Example”,然后将该特定文件夹中所有内容的所有文件名和文件路径导出到工作簿中的另一个工作表中。我想知道是否可以抓取该文件夹中的所有文件('Z:\Example'),如果该目录中有任何其他文件夹,也可以抓取该文件夹中的所有文件 例如,我在单元格A19中输入“Z:\Example”(根据下面的代码), “Z:\Example”中有另一个文件夹,Z:\Example\other”。所有文件 在“Z:\Example”和

目前,我有一个用于索引文件夹的工作簿,您可以在其中输入文件夹路径,例如“Z:\Example”,然后将该特定文件夹中所有内容的所有文件名和文件路径导出到工作簿中的另一个工作表中。我想知道是否可以抓取该文件夹中的所有文件('Z:\Example'),如果该目录中有任何其他文件夹,也可以抓取该文件夹中的所有文件

例如,我在单元格A19中输入“Z:\Example”(根据下面的代码), “Z:\Example”中有另一个文件夹,Z:\Example\other”。所有文件 在“Z:\Example”和“Z:\Example\other”中,都可以将 excel表格2

我希望不必在开始时插入我想要索引的所有路径,但如果这是不可避免的,则可以。谢谢你的帮助


谢谢

在评论中,有很多资源可以列出文件夹及其子文件夹。此代码段是根据您的应用程序自定义的。它使用递归,需要将根文件夹和目标单元格输入到粘贴结果的位置

Private Sub CommandButton1_Click()
    'Call the recursive function
    ListAllFiles ThisWorkbook.Sheets(1).Range("A19").Value, ThisWorkbook.Sheets(2).Cells(2, 1)
    msgBox "Task Completed"
End Sub


Private Sub ListAllFiles(root As String, targetCell As Range)
    Dim objFSO As Object, objFolder As Object, objSubfolder As Object, objFile As Object
    Dim i As Integer, Target_Path As String

    'Create an instance of the FileSystemObject
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'Get the folder object
    Set objFolder = objFSO.GetFolder(root)
    'loops through each file in the directory and prints their names and path

    For Each objFile In objFolder.Files
        'print file name
        targetCell.Value = objFile.Name
        'print file path
        targetCell.Offset(, 1).Value = objFile.Path
        Set targetCell = targetCell.Offset(1)
    Next objFile

    ' Recursively call the function for subfolders
    For Each objSubfolder In objFolder.SubFolders
        ListAllFiles objSubfolder.Path, targetCell
    Next objSubfolder
End Sub

在注释中,有许多资源可以列出文件夹及其子文件夹。此代码段是根据您的应用程序自定义的。它使用递归,需要将根文件夹和目标单元格输入到粘贴结果的位置

Private Sub CommandButton1_Click()
    'Call the recursive function
    ListAllFiles ThisWorkbook.Sheets(1).Range("A19").Value, ThisWorkbook.Sheets(2).Cells(2, 1)
    msgBox "Task Completed"
End Sub


Private Sub ListAllFiles(root As String, targetCell As Range)
    Dim objFSO As Object, objFolder As Object, objSubfolder As Object, objFile As Object
    Dim i As Integer, Target_Path As String

    'Create an instance of the FileSystemObject
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'Get the folder object
    Set objFolder = objFSO.GetFolder(root)
    'loops through each file in the directory and prints their names and path

    For Each objFile In objFolder.Files
        'print file name
        targetCell.Value = objFile.Name
        'print file path
        targetCell.Offset(, 1).Value = objFile.Path
        Set targetCell = targetCell.Offset(1)
    Next objFile

    ' Recursively call the function for subfolders
    For Each objSubfolder In objFolder.SubFolders
        ListAllFiles objSubfolder.Path, targetCell
    Next objSubfolder
End Sub

打开文件(
Set Target\u Workbook=Workbooks.Open(Target\u Path)
)是无用的。很抱歉,从另一个脚本缩短了此脚本,必须将其保留在其中。谢谢我想您可以在这里找到采用递归技术的相同问题答案。请参阅打开文件(
Set Target\u Workbook=Workbooks.Open(Target\u Path)
)是无用的。很抱歉,从另一个脚本缩短了此脚本,一定是将其保留在其中。谢谢我想你可以在这里找到同样的问题答案,采用递归技术