【VBA】複数フォルダ内のファイルを一括取得!フォルダも含めて表示!

f:id:yshgs_elec:20200905003352j:plain

「大事なファイルをどこにしまったのか忘れてしまった。ファイル名もわからないので、検索することもできない。」

 

この記事ではこんな悩みを解決するために、複数のフォルダの中身をエクセルファイル上に一括表示する方法についてご紹介します。

 

それでは早速やっていきましょう!

 

スポンサーリンク

やりたいことのイメージ共有

本題に入る前に、この記事で紹介する内容を共有化しておきましょう。

 

状況としては以下のようにcase01からcase10までのフォルダが存在しています。

f:id:yshgs_elec:20200905000635j:plain

 

さらにその中には以下のようにフォルダとファイルが3つずつ入っています。

f:id:yshgs_elec:20200905000936j:plain

さきほどのcase01からcase10までフォルダとファイルが複数入っている状態です。

 

今回はこれらのフォルダとファイルをエクセル上に一覧表示していきます。

 

あなたのやりたいこととイメージが一致していれば、ぜひ続きをご覧ください。

スポンサーリンク

フォルダの中身を一括取得する方法

まずは以下の画像のようにエクセルファイルを整えておきます。

※今回は探索するフォルダのフルパスが取得できている前提で説明していきます。

探索フォルダ内データを一覧化するためのエクセルシート

 

フォルダのフルパスの取得方法については以下の記事をご覧ください。

www.higashisalary.com

 

下準備が整ったら次はVBAコードの記述します。

 

以下が実行コードです。

フォルダとファイルを一括取得するコード

Sub search_file()
    Dim search_folder As String
    Dim path_name As String
    Dim file_name As String
    Dim i As Integer, j As Integer
    i = 0
    Do Until Cells(4 + i, 1) = ""
        search_folder = Cells(4 + i, 1).Value
        path_name = search_folder & "\"
        file_name = Dir(path_name, vbDirectory)
        j = 0
        Do While file_name <> ""
            If file_name <> "." And file_name <> ".." Then
                j = j + 1
                Cells(4 + i, 5 + j) = file_name
            End If
            file_name = Dir()
        Loop
        i = i + 1
    Loop
End Sub

記述が終わったらあとは実行するのみ!

以下が実行結果です。

しっかりとフォルダとファイルが表示されていますね。

マクロで指定フォルダ内データを一覧化した結果

ファイルだけを一括取得するコード

フォルダは除外して表示したい場合は、

file_name = Dir(path_name, vbDirectory) の部分を

file_name = Dir(path_name, vbNormal) に変更すればOKです。

念のためコードを記述しておきます。

Sub search_file()
    Dim search_folder As String
    Dim path_name As String
    Dim file_name As String
    Dim i As Integer, j As Integer
    i = 0
    Do Until Cells(4 + i, 1) = ""
        search_folder = Cells(4 + i, 1).Value
        path_name = search_folder & "\"
        file_name = Dir(path_name, vbNormal)
        j = 0
        Do While file_name <> ""
            If file_name <> "." And file_name <> ".." Then
                j = j + 1
                Cells(4 + i, 5 + j) = file_name
            End If
            file_name = Dir()
        Loop
        i = i + 1
    Loop
End Sub

この場合は以下のようにファイルだけが表示されています。

フォルダを除外し、ファイルだけを一覧化した結果

フォルダをひとつひとつ開いて中身を確認するのは非常に面倒な作業ですので、これを一度作っておくと非常に便利ですね。

 

スポンサーリンク

おわりに

というわけで今回は取得したフォルダのフルパスから、中に入っているフォルダやファイルをエクセル上に一覧表示する方法についてご紹介しました。

 

このブログでは、エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。

■もっと業務を効率化したい。

■無駄な作業を極力へらしたい。

こんなひとはぜひ他の記事も読んでみてください。

 

最後に・・・

このブログを応援してあげても良いよ、という方は以下のボタンをポチっていただけると嬉しいです。

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

にほんブログ村 IT技術ブログへ
にほんブログ村

Twitterもやっていますので、興味があれば覗いてみてください。

それではまた!!

オススメ記事

www.higashisalary.com

www.higashisalary.com

コメント

タイトルとURLをコピーしました