指定其他目录以循环通过Excel / VBA

我正在循环使用一个文件系统对象的一组目录,我想指定一个额外的目录来循环。 例如,我目前有:

Sub test() Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(Directory) Set colSubfolders = objFolder.Subfolders For Each objSubfolder In colSubfolders ' take some action End For End Sub 

但是,我想指定一个额外的文件夹循环,如:

 colSubfolders = colSubfolders + "additionalpath" For Each objSubfolder In colSubfolders .... 

或者,是否可以在循环命令中指定多个对象,例如:

 For Each objSubfolder in colSubfolders, "additionalpath" 

最简单的方法是打破枚举目录和“采取一些行动”的代码的代码,并将其包装在一个重复您所需要的调用;

 Sub foo() enumDirs "c:\temp\", "c:\music", "c:\as many as you like ..." End Sub Sub enumDirs(ParamArray strPaths() As Variant) Dim i As Long For i = 0 To UBound(strPaths) enumDir CStr(strPaths(i)) Next End Sub Sub enumDir(strPath As String) Dim objFolder As Object, colSubfolders As Object, objSubfolder As Object Set objFolder = CreateObject("Scripting.FileSystemObject").GetFolder(strPath) Set colSubfolders = objFolder.Subfolders For Each objSubfolder In colSubfolders TakeSomeAction strPath, objSubfolder.Name Next End Sub sub TakeSomeAction(strRoot As String, strFoundPath As String) Debug.Print ">"; strRoot & ", " & strFoundPath End sub