【サンプル付き】指定フォルダからファイルを自動抽出

下記図のようにフォルダ名をVersion情報や日付、番号などで管理しているケースでファイルを自動抽出する方法を紹介します。

ファイル名は決まってるけど(下記例は”csvFile.csv”)、フォルダ名は決まってないときに便利だね!

目次

指定フォルダからファイルを自動抽出 サンプル

抽出したいファイル名は決まってるけど、フォルダ名が決まっていない

このようなケースでInputBoxでフォルダのVersion情報を入力するだけで、指定したフォルダにアクセスしサブフォルダも含めて抽出したいファイルを検索し、パスをセルに記載するサンプルになります。

再帰呼び出しにより指定したフォルダ下の全サブフォルダにアクセスします。

サンプルでは指定したフォルダ下には必ずファイル名が”csvFile.csv”のcsvファイルが1つのみ存在することが前提条件となります。

実行したら、ワークシート”Sheet1″のB2セルにPathが下記出されるのでご注意ください。

*****部分含む、FOLDER_PATHの値は個人の環境に書き換えてください。

Sub Sample()

    Const FOLDER_PATH As String = "C:\Users\*****\VBA\実践\指定フォルダからファイル自動抽出"
    Dim Version As Long
    
    ThisWorkbook.Worksheets("Sheet1").Activate
    
    Version = InputBox("Versionを入力してください")

    Call FileSearch(FOLDER_PATH & "\フォルダ_Version" & Version)

End Sub

Sub FileSearch(Path As String)

    Dim FSO As Object, Folder As Variant, FIle As Variant
    Set FSO = CreateObject("Scripting.FileSystemObject")
    For Each Folder In FSO.GetFolder(Path).SubFolders
        Call FileSearch(Folder.Path)
    Next Folder
    For Each FIle In FSO.GetFolder(Path).Files
        If InStr(FIle.Type, "CSV") > 0 Then
            Cells(2, 2) = FIle.Path
        End If
    Next FIle

End Sub

まとめ

InputBoxで入力しているデータはUserFormに置き換えしたり、FileTypeでcsvファイルに限定しているところもファイル名指定にすると汎用性が高まります。

この記事がミス撲滅や生産性向上につながるととても嬉しいです。

VBA初級から抜け出すための知恵と、実務で活用できるスキルが学べる1冊です!激しくオススメ!

bookfan 2号店 楽天市場店
¥1,980 (2024/09/23 18:47時点 | 楽天市場調べ)

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

この記事を書いた人

ものおと申します。

10年以上の大手メーカー勤務経験のあるエンジニアです。

これまでのものづくりの経験から小学生にも伝わるExcel VBAお役立ち記事を発信していきたいと思います。

よろしくお願いします。

コメント

コメントする

CAPTCHA


目次