2013年7月28日日曜日

Excel VBA でよく使う FileSystemObject オブジェクトの書き方

Excel VBAで、FileSystemObjectオブジェクトのよく使う書き方をまとめたいと思います。  

指定フォルダ内のすべてのサブフォルダを取得する方法。

メソッドを呼び出すときに渡している引数「"C:\ExcelTest"」を親フォルダとし、直下のサブフォルダを取得しています。
取得したサブフォルダに対し、再帰呼び出しをしているのでフォルダが何階層でも取得することができます。

Private Sub CommandButton1_Click()

    Call folderSearch("C:\ExcelTest")
    
End Sub

Sub folderSearch(path As String)

    Dim FSO As Object, RootFolder As Object
    Dim sbFolders As Variant
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set RootFolder = FSO.getfolder(path)
    For Each sbFolders In RootFolder.SubFolders
        Debug.Print sbFolders.path
        Call folderSearch(sbFolders.path)
    Next sbFolders
    
End Sub


次のコードは上記の応用です。

指定フォルダ内のすべてのファイルを取得する方法。

追加したのは17行目あたりからです。
ファイル名をフルパスで取得する場合は、Filesコレクション。ファイル名のみを取得する場合は、Nameコレクションを使います。

Private Sub CommandButton1_Click()

    Call folderSearch("C:\ExcelTest")
    
End Sub

Sub folderSearch(path As String)

    Dim FSO As Object, RootFolder As Object, File As Variant
    Dim sbFolders As Variant
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set RootFolder = FSO.getfolder(path)
    For Each sbFolders In RootFolder.SubFolders
        Call folderSearch(sbFolders.path)
    Next sbFolders
    For Each File In RootFolder.Files
        Debug.Print File.path
    Next File
    
End Sub
コードを整理したら随時更新していきます。m(__)m

0 件のコメント:

コメントを投稿