【VBA】指定したファイルに関する時間情報を取得する

エクセルVBAで使うコードの備忘録。VBAで指定したファイルのサイズを取得するコード。ファイルシステムオブジェクトを使ってファイルオブジェクトのプロパティから取得します。ファイルの「作成時刻」、「最終アクセス時刻」、「最終更新時刻」を取得する方法について。

なお、サンプルコードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

スポンサーリンク

作成時刻を取得する

ウィンドウズのファイルやフォルダに関連する情報を扱う場合は、ファイルシステムオブジェクトを使用します。ファイルシステムオブジェクトのGetFileメソッドに引数としてファイルのパスを与えると、ファイルの情報を格納したファイルオブジェクトを取得することができます。このファイルオブジェクトにファイル作成時刻の情報が含まれるので、DateCreatedプロパティにアクセスして情報を取得します。

Public Sub GetFileCreatedDate()
    
    '--- 作成時刻を取得したいファイルのパス ---'
    Dim filePath As String
    filePath = "[ファイルのパス]"
    
    '--- ファイルシステムオブジェクト ---'
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    '--- サイズを格納する ---'
    Dim dateCreated As Date
    dateCreated = fso.GetFile(filePath).DateCreated

End Sub

最終アクセス時刻を取得する

作成時刻を取得する場合と手順はほとんど同じです。ファイルオブジェクトを取得するところまでは同じで、情報を取得するのにアクセスするプロパティが変わるだけになります。最終アクセス時刻を取得するには「DateLastAccessed」プロパティを使用します。

Public Sub GetFileLastAccessedDate()
    
    '--- 作成時刻を取得したいファイルのパス ---'
    Dim filePath As String
    filePath = "[ファイルのパス]"
    
    '--- ファイルシステムオブジェクト ---'
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    '--- サイズを格納する ---'
    Dim dateCreated As Date
    dateCreated = fso.GetFile(filePath).DateLastAccessed

End Sub

最終更新時刻を取得する

こちらも使用するプロパティが異なるだけです。最終更新時刻を取得するには「DateLastModified」プロパティを使用します。

Public Sub GetFileLastModifiedDate()
    
    '--- 作成時刻を取得したいファイルのパス ---'
    Dim filePath As String
    filePath = "[ファイルのパス]"
    
    '--- ファイルシステムオブジェクト ---'
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    '--- サイズを格納する ---'
    Dim dateCreated As Date
    dateCreated = fso.GetFile(filePath).DateLastModified

End Sub