ファイルのタイムスタンプや属性情報の取得

ファイルの属性では、タイプ、更新日時、ファイルサイズを取得することができます。
従来型のステートメントでの記述サンプルです。

'***************************************************************************************************
'   ファイルの属性の取得サンプル                                    Module1(Module)
'
'   作成者:井上治  URL:http://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev  変更履歴内容------------------------------------------------------------------------>
'03/06/27(1.00)新規作成
'12/01/28(1.10)修正等
'20/02/29(1.11)*.xlsm化、他
'***************************************************************************************************
Option Explicit
'===================================================================================================
Private Const g_cnsTitle As String = "ファイルの属性の取得"
Private Const g_cnsAttr As String = "このファイルの属性は"

'***************************************************************************************************
'   ■■■ サンプルコード ■■■
'***************************************************************************************************
'* 処理名 :GetFileAttribute
'* 機能  :ファイルの属性の取得サンプル
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年06月27日
'* 作成者 :井上 治
'* 更新日 :2020年02月29日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Sub GetFileAttribute()
    '-----------------------------------------------------------------------------------------------
    Dim intAttr As Integer                                          ' ファイル属性
    Dim strMSG As String                                            ' メッセージWORK
    Dim strFileName As String                                       ' OPENするファイル名(フルパス)
    Dim vntFileName As Variant                                      ' ファイル名受取用
    '-----------------------------------------------------------------
    ' ファイル名の指定
    vntFileName = Application.GetOpenFilename("全てのファイル (*.*),*.*", , g_cnsTitle)
    ' キャンセルされた場合はFalseが返るので以降の処理は行なわない
    If VarType(vntFileName) = vbBoolean Then Exit Sub
    strFileName = vntFileName
    '-----------------------------------------------------------------
    ' ファイル属性の取得
    intAttr = GetAttr(strFileName)                              ' @
    strMSG = g_cnsAttr
    ' ファイル属性の判定
    If (intAttr And vbReadOnly) <> 0 Then                       ' A
        strMSG = strMSG & vbCr & "読み取り専用"
    End If
    If (intAttr And vbHidden) <> 0 Then
        strMSG = strMSG & vbCr & "隠しファイル"
    End If
    If (intAttr And vbSystem) <> 0 Then
        strMSG = strMSG & vbCr & "システムファイル"
    End If
    If (intAttr And vbDirectory) <> 0 Then
        strMSG = strMSG & vbCr & "フォルダ"
    End If
    If (intAttr And vbArchive) <> 0 Then
        strMSG = strMSG & vbCr & "アーカイブ"
    End If
    If (intAttr And vbNormal) <> 0 Then
        strMSG = strMSG & vbCr & "通常ファイル"
    End If
    If strMSG = g_cnsAttr Then
        strMSG = strMSG & vbCr & "属性=" & intAttr
    End If
    strMSG = strMSG & vbCr & "です。"
    '-----------------------------------------------------------------
    ' 更新日時
    strMSG = strMSG & vbCr & "更新日時は" & _
        FileDateTime(strFileName)                               ' B
    ' ファイルサイズ
    strMSG = strMSG & vbCr & "サイズは" & _
        FileLen(strFileName) & "バイトです。"                   ' C
    '-----------------------------------------------------------------
    ' 処理結果を表示
    MsgBox strMSG, vbInformation, g_cnsTitle
End Sub

'----------------------------------------<< End of Source >>----------------------------------------
実行すると、ファイルの選択ダイアログが表示されるので、ファイルを選択すると、
ファイルの属性の取得
(画像をクリックすると、このサンプルがダウンロードできます)
とメッセージが表示されます。
概略説明
@ GetAttr関数では、ファイルの属性が取得できます。実際の値は複数の属性を表意していることがあります。
A このようにAnd演算子を使ってビット単位比較の必要があります。例えば「読み取り専用」と「アーカイブ」を合わせた値等になります。
B FileDateTime関数ではファイルの最終更新日時が取得できます。
C FileLen関数ではファイルのサイズが取得できます。但し、Open中のファイルや、更新直後のファイルでは正しい値が取得できない場合があります。これはディスク装置の遅延書き込みに起因しているようです。正しい値を取得したい場合は、実際にそのファイルを入力用でOpenし、LOF関数で取得するべきでしょう。
ファイルの一覧上に最終更新日時やサイズを表示する例は、「フォルダ内のファイル一覧の取得」の後半にサンプルを用意しています。

一方、FSO(FileSystemObject)ではこのような記述になります。
ファイルのオブジェクトをつかんでからは、各プロパティを参照するだけです。それ以降の編集は変わらないので、上記のステートメントとあまり変わらない印象かも知れません。

'***************************************************************************************************
'   ファイルの属性の取得サンプル(FSO)                               Module2(Module)
'
'   作成者:井上治  URL:http://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev  変更履歴内容------------------------------------------------------------------------>
'03/06/27(1.00)新規作成
'12/01/28(1.10)修正等
'20/02/29(1.11)*.xlsm化、他
'***************************************************************************************************
Option Explicit
'===================================================================================================
Private Const g_cnsTitle As String = "ファイルの属性の取得"
Private Const g_cnsAttr As String = "このファイルの属性は"

'***************************************************************************************************
'   ■■■ サンプルコード ■■■
'***************************************************************************************************
'* 処理名 :GetFileAttribute2
'* 機能  :ファイルの属性の取得サンプル(FSO)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年06月27日
'* 作成者 :井上 治
'* 更新日 :2020年02月29日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Sub GetFileAttribute2()
    '-----------------------------------------------------------------------------------------------
    Dim objFso As FileSystemObject                                  ' FileSystemObject
    Dim objFile As File                                             ' File
    Dim intAttr As Integer                                          ' ファイル属性
    Dim strMSG As String                                            ' メッセージWORK
    Dim strFileName As String                                       ' OPENするファイル名(フルパス)
    Dim vntFileName As Variant                                      ' ファイル名受取用
    '-----------------------------------------------------------------
    ' ファイル名の指定
    vntFileName = Application.GetOpenFilename("全てのファイル (*.*),*.*", , g_cnsTitle)
    ' キャンセルされた場合はFalseが返るので以降の処理は行なわない
    If VarType(vntFileName) = vbBoolean Then Exit Sub
    strFileName = vntFileName
    '-----------------------------------------------------------------
    Set objFso = New FileSystemObject
    ' ファイル、ファイル属性の取得
    Set objFile = objFso.GetFile(strFileName)
    intAttr = objFile.Attributes
    strMSG = g_cnsAttr
    '-----------------------------------------------------------------
    ' ファイル属性の判定
    If (intAttr And vbReadOnly) <> 0 Then
        strMSG = strMSG & vbCr & "読み取り専用"
    End If
    If (intAttr And vbHidden) <> 0 Then
        strMSG = strMSG & vbCr & "隠しファイル"
    End If
    If (intAttr And vbSystem) <> 0 Then
        strMSG = strMSG & vbCr & "システムファイル"
    End If
    If (intAttr And vbDirectory) <> 0 Then
        strMSG = strMSG & vbCr & "フォルダ"
    End If
    If (intAttr And vbArchive) <> 0 Then
        strMSG = strMSG & vbCr & "アーカイブ"
    End If
    If (intAttr And vbNormal) <> 0 Then
        strMSG = strMSG & vbCr & "通常ファイル"
    End If
    If strMSG = g_cnsAttr Then
        strMSG = strMSG & vbCr & "属性=" & intAttr
    End If
    strMSG = strMSG & vbCr & "です。"
    '-----------------------------------------------------------------
    ' 更新日時
    strMSG = strMSG & vbCr & "更新日時は" & _
        objFile.DateLastModified
    ' ファイルサイズ
    strMSG = strMSG & vbCr & "サイズは" & _
        objFile.Size & "バイトです。"
    '-----------------------------------------------------------------
    Set objFile = Nothing
    Set objFso = Nothing
    ' 処理結果を表示
    MsgBox strMSG, vbInformation, g_cnsTitle
End Sub

'----------------------------------------<< End of Source >>----------------------------------------
(ここをクリックすると、このサンプルがダウンロードできます)