【VBA】指定フォルダ内ファイルの最終更新日を一括取得する方法!

この記事では、指定フォルダ内にあるファイルの最終更新日を一括取得する方法をご紹介していきます。

 

データ管理の際などの役立つスキルです。

ぜひやり方を覚えておきましょう。

 

それではさっそくやっていきましょう。

 

スポンサーリンク

やりたいことの事前確認

まずはこの記事の内容があなたのやりたいことと一致しているかどうかを確認するために、最終的にどんなものを作りたいかを始めにご紹介しておきましょう。

 

今回は以下のフォルダ内にあるファイル達のファイル名とその最終更新日をエクセルシートに一括記入していきます。

フォルダ内にある画像データのファイル名と最終更新時刻

最終的な完成形はこんな感じですね。

フォルダ内にある画像データのファイル名と最終更新時刻をVBAで自動出力した結果

 

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

 

スポンサーリンク

データ記入用にエクセルシートを整える

VBAコードの記述に入る前にまずはデータを記入する場所を整えておきましょう。

今回は以下のようにデータ記入欄を作成しておきました。

情報を出力するためにエクセルシートを調整した結果

もし、この場所とは別の場所にデータを入力する場合は、以降の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
スポンサーリンク

マクロを実行する

コードが書けたら実際に実行してみましょう。

以下が実行結果です。

フォルダ内にあるファイル名と最終更新日をVBAで自動取得した結果

ご覧のように、このコードを普通に実行してしまうと分単位までの時間を取得してきてしまいます。

 

正直ここまで正確なデータを必要とする状況はそうそうないでしょうから日付までの情報に修正してみましょう。

 

以下がその手順です。

取得された日付データの形式を変更する方法

①最終更新日が記入されているセルをすべて選択

②右クリック

③セルの書式設定

と進めていきます。

 

すると次は以下のようなウィンドウが出てきます。

取得された日付データの形式を変更する方法

今回はyyyy/m/dを選択します。

⇒OKで閉じます。

 

これで冒頭に紹介した状態のできあがりです。

VBAでファイル名と最終更新日を一括取得した結果

先ほどの表示形式の選択を変更すれば〇年〇月〇日みたいな形式にもできますのでお好みに合わせて変更してみましょう。

 

スポンサーリンク

おわりに

というわけで今回は指定フォルダ内にあるファイルのファイル名、最終更新日を一括取得する方法をご紹介しました。

データ管理の際などに是非ご活用ください。

 

〇今回の記事で使われているスキル

【VBA】Dir関数の特性を詳細解説!ファイル確認や一括処理に超便利!

 

このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

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

それではまた!

コメント

  1. 名乗るほどの者では… より:

    Dim base_path, extension, file_name As String

    ↑これって base_path, extension はVariantになりますよね?

    • ヒガシ ヒガシ より:

      ご指摘ありがとうございます。
      恥ずかしながらずっと勘違いしておりました。
      ご教示いただきありがとうございます。
      明日からコツコツ修正いたします😭

      また何かあれば是非ご教示頂けると幸いです。
      よろしくお願いします。

  2. 初心者 より:

    初めまして。
    初歩的な質問ですがお分かりになられましたらご教示願います。
    資料管理表を作成したく、コードをコピーさせていただきました。
    ありがとうございます。ほぼほぼうまくいったのですが、
    一部、マクロ実行でファイルパスの順番が変わってしまいました。
    このファイルパスは入力したデータよりもファイルの入っているフォルダの順番に
    帰属してしまうのでしょうか。出来たらバラバラが良いのですが…
    ご確認のほどよろしくお願いいたします。

    • ヒガシ ヒガシ より:

      ご質問ありがとうございます。
      すみません、質問の内容を十分把握できていないのですが、基本的にはフォルダ内ファイルを名前順で処理していきます。
      バラバラが良いというのはどういう意味でしょうか?

      • 初心者 より:

        ご確認ありがとうございます。わかりづらく申し訳ございません。
        ファイルの名前順ではなく、こちらが指定した順番のフォルダにて
        マクロが実行できるのかと思い質問してしまいました。
        名前順とのことでしたのでファイル名の工夫にてどうにかしようと思います。
        ありがとうございます。

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