2012-04-24 13 views
3

ファイルシステムオブジェクトを使用して一連のディレクトリをループしており、ループする追加のディレクトリを指定する必要があります。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" 
+0

2つ目のループを分けるだけです。 2番目のループをフォルダのリストにしたい場合は、文字列の配列を作成し、その配列を繰り返し処理します。 – Marc

答えて

3

最も簡単な方法は、「何らかのアクションを取る」というディレクトリを列挙コードとコードを抜け出すと、あなたが必要なもの繰り返されるコールでそれをラップすることです。

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 
+0

チップをありがとう - アクションを包むことを考えていたはずです。 – mike

関連する問題