3

ファイルシステムオブジェクトを使用して一連のディレクトリをループしていますが、ループする追加のディレクトリを指定したいと思います。たとえば、私は現在次のようにしています。

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"
4

1 に答える 1

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
于 2012-04-24T17:52:48.750 に答える