【Excelマクロ】フォルダ内のファイルの一覧と更新時間を取得する
Excelで、サブフォルダも含めたファイルの一覧とファイルの更新時間を取得するマクロを紹介します。
ファイル一覧の取得ついでに、ハイパーリンクで一覧からすぐにファイルにアクセスできるようにもしておきます。
所定のファイルが揃っているか確認する時などに使えると思います。
では早速、内容を紹介します。

ワークシート側
ワークシートの見た目はこんな感じです。(ファイルの一覧を取得後の状態)

使い方は下記の通りです。
- B1セルにファイルの一覧を取得するパスを指定する。
- B2セルに一覧化するファイルのフィルタ条件を指定する。
(DIRコマンドのオプション相当。「*」なら全て、「*.xlsx」なら拡張子が.xlsxのものだけ、とか) - マクロ「ファイル一覧取得」を実行する。
- 4行目以降に、ファイルへのリンク、フォルダ名、ファイル名、更新時間、の順に出力される。
マクロ側
※このマクロを実行するためには、VBAエディタのメニュー > ツール > 参照設定で「Microsoft Scripting Runtime」を参照するように設定しておいてください。
前述のワークシートのレイアウトだとして、マクロは下記のようになります。
Sub ファイル一覧取得() Dim パス As String Dim フィルタ As String Dim 出力行Index As Long Range("A4:D1048576").ClearContents 'ファイル一覧をクリアする パス = Cells(1, 2) フィルタ = Cells(2, 2) 出力行Index = 4 Call ファイル一覧取得Sub(パス, フィルタ, 出力行Index) ' End Sub Function ファイル一覧取得Sub(ByVal パス As String, ByVal フィルタ As String, ByVal 出力行Index As Long) Dim fso As New Scripting.FileSystemObject ' Dim fileo As File Dim foldero As Folder Dim ファイル名 As String If Right(パス, 1) <> "\" Then パス = パス + "\" End If ファイル名 = Dir(パス & フィルタ) Do While ファイル名 <> "" Set fileo = fso.GetFile(パス & ファイル名) ActiveSheet.Hyperlinks.Add Anchor:=Cells(出力行Index, 1), _ Address:=パス & ファイル名, _ TextToDisplay:="■" 'リンク Cells(出力行Index, 2) = fileo.ParentFolder 'フォルダ名 Cells(出力行Index, 3) = fileo.Name 'ファイル名 Cells(出力行Index, 4) = fileo.DateLastModified '更新日付 出力行Index = 出力行Index + 1 ファイル名 = Dir() Loop 'サブフォルダのファイル一覧を取得する For Each foldero In fso.GetFolder(パス).SubFolders Call ファイル一覧取得Sub(foldero.path, フィルタ, 出力行Index) Next End Function
まとめ
以上で、Excel上でファイルのリストを取得することができるようになります。
一覧を取得したファイルに対して定型処理をするような場合、Excelで一覧取得と定型処理をまとめて実行するのもよいですね。
ちなみに、ファイルの一覧と更新時間を取得するのであれば、コマンドプロンプトでdirコマンドを使えば取得できます。
単発でファイルのリストを取得したいのであれば、そちらの方が手っ取り早いでしょう。
Excel作業を楽にしよう
日頃、面倒だなと思っている作業も、Excelのことを少し知るだけで簡単に片付けられるようになったりします。
どんなことができるのかを知っているだけでも違うので、よくExcelを使うという方は参考書などをざっと見てみることをオススメします!
Kindle Unlimited会員なら無料で読めるExcel関連書籍を紹介しておきます。
.
ディスカッション
コメント一覧
まだ、コメントがありません