列出存储在各种文件夹和子文件夹中的工作簿中的所有工作表 – Excel,VBA

我一直在试图编写一个macros,将列出我的目录中的每个工作簿的工作表名称。 这些文件存储在不同的文件夹和子文件夹中,所以我希望它能把所有的东西都拿出来,我可以从整个输出中推断出我需要的信息。 这个代码是我在这个网站的用户的帮助下放在一起的,但是我仍然没有得到想要的结果。 有人请帮忙!

Sub machinegun() FileType = "*.xls*" OutputRow = 2 Set fso = CreateObject("Scripting.FileSystemObject") Set Folder = fso.GetFolder("G:") Set Curr_File = (filepath & FileType) For Each Subfolder In Folder.Subfolders Do Until Curr_File = "" Set Fldr.wkbk = Workbooks.Open(filepath & Curr_File, False, True) ThisWorkbook.ActiveSheet.Range("A" & OutputRow) = Curr_File ThisWorkbook.ActiveSheet.Range("B" & OutputRow).ClearContents OutputRow = OutputRow + 1 For Each Sht In FldrWkbk.Sheets ThisWorkbook.ActiveSheet.Range("B" & OutputRow) = Sht.Name ThisWorkbook.ActiveSheet.Range("A" & OutputRow).ClearContents OutputRow = OutputRow + 1 Next Sht FldrWkbk.Close SaveChanges:=False Loop Next End Sub 

这里是从循环所有子文件夹使用VBA ,这将为你工作:

 Option Explicit Sub LoopThroughFiles() Dim FileSystem As Object Dim HostFolder As String HostFolder = "C:\Users\" Set FileSystem = CreateObject("Scripting.FileSystemObject") DoFolder FileSystem.GetFolder(HostFolder) End Sub Sub DoFolder(Folder) Dim SubFolder For Each SubFolder In Folder.SubFolders DoFolder SubFolder Next Dim File For Each File In Folder.Files Debug.Print File.name Next End Sub 

只要确保您运行LoopThroughFiles()并将HostFolder更改为有意义的东西。 然后在debug.print使用File.name