分かりやすく、使いやすく。

ファイルの更新日時を取得する方法

スポンサーリンク

Excel VBA でファイルのタイムスタンプ(更新日時)を取得するには標準関数を使用する方法と FileSystemObject を使用する方法があります。

  1. 標準関数を使用する方法
  2. FileSystemObject を使用する方法


標準関数を使用する方法

FileDateTime 関数を使用します。 FileDateTime はファイルの更新日時を Date 型で返します。

サンプルコードは次の通りです。

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Option Explicit
 
Sub test1()
    Dim filePath As String
    Dim fileTimeStamp As Date
    
    filePath = "C:\temp\test.txt"
    
    'ファイルの更新日時を取得
    fileTimeStamp = FileDateTime(filePath)
    
    'ファイルの更新日時を確認
    Debug.Print "ファイルの更新日時は" & fileTimeStamp & "です。"
End Sub 

上記を実行するとイミディエイトウインドウに次のようにファイルの更新日時が表示されます。

イミディエイトウインドウの出力結果
1
ファイルの更新日時は2017/12/02 14:41:37です。 

FileDateTime が返す値は Date 型なので、 Format 関数で文字列に整形することも可能です。サンプルコードは次の通りです。

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
Sub test2()
    Dim filePath As String
    Dim fileTimeStamp As Date
    
    filePath = "C:\temp\test.txt"
    fileTimeStamp = FileDateTime(filePath)
    
    Debug.Print "ファイルの更新日時は" & _
               Format(fileTimeStamp, "yyyy年mm月dd日 hh時mm分ss秒") & _
               "です。"
End Sub 

上記を実行するとイミディエイトウインドウに次のようにファイルの更新日時が表示されます。

イミディエイトウインドウの出力結果
1
ファイルの更新日時は2017年12月02日 14時41分37秒です。 

FileSystemObject を使用する方法

FileSystemObject の GetFile メソッドにより File オブジェクトを取得して DateLastModified から値を取得します。

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
 
Sub test3()
    Dim objFso As Object
    Dim objFile As Object
    Dim fileTimeStamp As Date
    
    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFso.GetFile("C:\temp\test.txt")
    
    '更新日時を取得
    fileTimeStamp = objFile.DateLastModified
    
    Debug.Print "ファイルの更新日時は" & fileTimeStamp & "です。"
    
    Set objFso = Nothing
    Set objFile = Nothing
End Sub 

上記を実行するとイミディエイトウインドウに次のようにファイルの更新日時が表示されます。

イミディエイトウインドウの出力結果
1
ファイルの更新日時は2017/12/02 14:41:37です。 

DateLastModified が返す値は Date 型なので、 Format 関数で文字列に整形することも可能です。サンプルコードは次の通りです。

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub test2()
Option Explicit
 
Sub test4()
    Dim objFso As Object
    Dim objFile As Object
    Dim fileTimeStamp As Date
    
    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFso.GetFile("C:\temp\test.txt")
    
    '更新日時を取得
    fileTimeStamp = objFile.DateLastModified
    
    Debug.Print "ファイルの更新日時は" & _
               Format(fileTimeStamp, "yyyy年mm月dd日 hh時mm分ss秒") & _
               "です。"
    
    Set objFso = Nothing
    Set objFile = Nothing
End Sub 

上記を実行するとイミディエイトウインドウに次のようにファイルの更新日時が表示されます。

イミディエイトウインドウの出力結果
1
ファイルの更新日時は2017年12月02日 14時41分37秒です。 
スポンサーリンク
スポンサーリンク