wanna.jp VBAリファレンス
Top > VBA関数リファレンス > VBA FileDateTime 関数で共有ファイルの「最新版」を確実に特定!ファイル更新日時取得の完全ガイド

VBA FileDateTime 関数で共有ファイルの「最新版」を確実に特定!ファイル更新日時取得の完全ガイド

「共有サーバーにあるあのファイル、本当に今日更新された最新版なの?」
Excel VBAを使って業務を効率化している皆さんなら、一度はこんな悩みに直面したことがあるのではないでしょうか。手作業での確認は手間がかかる上に、誤った古いファイルを使ってしまうリスクも。そんな文書管理のモヤモヤを解消する強力なVBA関数が、今回ご紹介する FileDateTime です。この関数をマスターすれば、共有ファイルの更新日時を瞬時に取得し、常に最新の情報を扱うことが可能になります。さあ、一緒にVBAによるスマートなファイル管理の世界へ踏み出しましょう。

【コピペで即解決!】FileDateTime 関数の基本コード

まずは、FileDateTime 関数の基本的な使い方を見てみましょう。以下のコードをVBAエディタに貼り付け、実行するだけで、指定したファイルの更新日時を取得できます。


Sub GetFileUpdateDate_Basic()
    Dim filePath As String
    Dim lastModified As Date

    ' ★調べたいファイルのパスを指定してください。
    '   例: "C:\SharedFolder\Master.xlsx"
    '   この例ではマクロファイルと同じフォルダのMaster.xlsxを想定しています。
    filePath = ThisWorkbook.Path & "\Master.xlsx"

    On Error GoTo ErrorHandler ' エラー発生時にErrorHandlerへジャンプ

    ' FileDateTime関数でファイル更新日時を取得
    lastModified = FileDateTime(filePath)

    ' 結果を表示
    MsgBox "ファイル名: " & filePath & vbCrLf & _
           "最終更新日時: " & Format(lastModified, "yyyy/mm/dd hh:mm:ss"), _
           vbInformation, "ファイル更新日時取得"

    Exit Sub ' エラーがなければここで終了

ErrorHandler:
    ' エラーメッセージを表示
    MsgBox "エラーが発生しました: " & Err.Description & vbCrLf & _
           "ファイルパス: " & filePath & vbCrLf & _
           "ファイルが存在しないか、アクセス権がない可能性があります。", _
           vbCritical, "エラー"
End Sub
    

コードのポイント:

  • filePath = ThisWorkbook.Path & "\Master.xlsx": ここで対象ファイルのパスを指定します。テストする際は、ご自身の環境に合わせてファイルを準備するか、既存のファイルパスに変更してください。
  • FileDateTime(filePath): この一行で、指定されたファイルの最終更新日時が返されます。
  • On Error GoTo ErrorHandler: ファイルが存在しない場合などに発生するエラーを捕捉し、コードが強制終了するのを防ぎます。

知っておくべき2つの落とし穴と確実な回避策

FileDateTime 関数は非常に便利ですが、実務で使う際にはいくつか注意すべき点があります。これを理解し、適切に対処することで、より堅牢で信頼性の高いVBAコードを作成できます。

落とし穴1: ファイルが存在しないとエラーになる

上記の基本コードでもOn Error GoToで簡易的なエラー処理を行いましたが、ファイルが存在しない場合に備えて、事前にチェックする方がスマートです。VBAではDir関数を使ってファイルの存在を確認できます。


Sub GetFileUpdateDate_Robust()
    Dim filePath As String
    Dim lastModified As Date
    Dim fileNameCheck As String

    filePath = ThisWorkbook.Path & "\Master.xlsx" ' 例: "C:\SharedFolder\Master.xlsx"

    ' Dir関数でファイルの存在をチェック
    ' Dir関数はファイルが存在すればそのファイル名を返し、存在しなければ空文字列を返します。
    fileNameCheck = Dir(filePath)

    If fileNameCheck = "" Then
        ' ファイルが存在しない場合
        MsgBox "指定されたファイルが見つかりません。" & vbCrLf & _
               "パス: " & filePath, vbExclamation, "ファイルエラー"
    Else
        ' ファイルが存在する場合のみ処理を実行
        lastModified = FileDateTime(filePath)
        MsgBox "ファイル名: " & filePath & vbCrLf & _
               "最終更新日時: " & Format(lastModified, "yyyy/mm/dd hh:mm:ss"), _
               vbInformation, "ファイル更新日時取得"
    End If
End Sub
    

落とし穴2: 取得できるのは「更新日」であり「作成日」ではない

FileDateTime 関数が返すのは、そのファイルが最後に更新された日時です。ファイルを「作成」した日時ではありません。共有サーバーでよくある「上書き保存」の場合、作成日は変わらず更新日のみが変わります。もし「作成日」が必要な場合は、FileSystemObject (FSO) を使う必要があります。

まとめ:FileDateTimeでスマートな文書管理を実現!

VBAの FileDateTime 関数は、共有サーバー上のファイルが最新版であるかを確認する際に非常に強力なツールとなります。ファイル更新日時を自動で取得し、手作業での確認の手間とリスクを大幅に削減できるでしょう。

今回ご紹介した「ファイルの存在チェック」や「更新日時と作成日時の違い」といった注意点を踏まえることで、より堅牢で実用的なVBAアプリケーションを構築できます。ぜひこの関数をあなたのVBAスキルに加えて、日々の業務効率化に役立ててください。

VBAでの業務効率化、悩み解決します

「このマクロ、もっと速くならないかな?」「エラーが消えない…」
Access/VBA専門のwanna.jpにご相談ください。

無料相談はこちら