この記事では、指定フォルダ内にあるファイルの最終更新日を一括取得する方法をご紹介していきます。
データ管理の際などの役立つスキルです。
ぜひやり方を覚えておきましょう。
それではさっそくやっていきましょう。
やりたいことの事前確認
まずはこの記事の内容があなたのやりたいことと一致しているかどうかを確認するために、最終的にどんなものを作りたいかを始めにご紹介しておきましょう。
今回は以下のフォルダ内にあるファイル達のファイル名とその最終更新日をエクセルシートに一括記入していきます。
最終的な完成形はこんな感じですね。
あなたのやりたいことと一致していれば、ぜひ続きをご覧ください。
データ記入用にエクセルシートを整える
VBAコードの記述に入る前にまずはデータを記入する場所を整えておきましょう。
今回は以下のようにデータ記入欄を作成しておきました。
もし、この場所とは別の場所にデータを入力する場合は、以降のVBAコードも書き換える必要がありますのでご注意ください。
最終更新日を一括取得するVBAコード
それではこの記事の本題であるVBAコードの記述に入っていきましょう。
※「VBAを使ったことがない」という方は以下の記事を参考に実行環境を整えておきましょう。
以下が先ほど紹介した作業を実施してくれるVBAコードです。
4行目の探索フォルダのフルパス、5行目の拡張子はあなたの状況に応じて適宜変更しましょう。
※今回は拡張子がJPG形式のものだけを取得するようにしています。
Sub date_list()
Dim base_path As String, extension As String
Dim file_name As String
Dim file_date As Date
base_path = "C:\Users\Desktop\test"
extension = "JPG"
file_name = Dir(base_path & "\*" & extension, vbNormal)
i = 0
Do Until file_name = ""
file_date = FileDateTime(base_path & "\" & file_name)
Cells(2 + i, 1) = file_name
Cells(2 + i, 2) = file_date
file_name = Dir()
i = i + 1
Loop
End Sub
マクロを実行する
コードが書けたら実際に実行してみましょう。
以下が実行結果です。
ご覧のように、このコードを普通に実行してしまうと分単位までの時間を取得してきてしまいます。
正直ここまで正確なデータを必要とする状況はそうそうないでしょうから日付までの情報に修正してみましょう。
以下がその手順です。
①最終更新日が記入されているセルをすべて選択
②右クリック
③セルの書式設定
と進めていきます。
すると次は以下のようなウィンドウが出てきます。
今回はyyyy/m/dを選択します。
⇒OKで閉じます。
これで冒頭に紹介した状態のできあがりです。
先ほどの表示形式の選択を変更すれば〇年〇月〇日みたいな形式にもできますのでお好みに合わせて変更してみましょう。
おわりに
というわけで今回は指定フォルダ内にあるファイルのファイル名、最終更新日を一括取得する方法をご紹介しました。
データ管理の際などに是非ご活用ください。
〇今回の記事で使われているスキル
【VBA】Dir関数の特性を詳細解説!ファイル確認や一括処理に超便利!
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント
Dim base_path, extension, file_name As String
↑これって base_path, extension はVariantになりますよね?
ご指摘ありがとうございます。
恥ずかしながらずっと勘違いしておりました。
ご教示いただきありがとうございます。
明日からコツコツ修正いたします😭
また何かあれば是非ご教示頂けると幸いです。
よろしくお願いします。
初めまして。
初歩的な質問ですがお分かりになられましたらご教示願います。
資料管理表を作成したく、コードをコピーさせていただきました。
ありがとうございます。ほぼほぼうまくいったのですが、
一部、マクロ実行でファイルパスの順番が変わってしまいました。
このファイルパスは入力したデータよりもファイルの入っているフォルダの順番に
帰属してしまうのでしょうか。出来たらバラバラが良いのですが…
ご確認のほどよろしくお願いいたします。
ご質問ありがとうございます。
すみません、質問の内容を十分把握できていないのですが、基本的にはフォルダ内ファイルを名前順で処理していきます。
バラバラが良いというのはどういう意味でしょうか?
ご確認ありがとうございます。わかりづらく申し訳ございません。
ファイルの名前順ではなく、こちらが指定した順番のフォルダにて
マクロが実行できるのかと思い質問してしまいました。
名前順とのことでしたのでファイル名の工夫にてどうにかしようと思います。
ありがとうございます。