「エクセル2003 vba フォルダのファイル名 更新日取得」
という検索が、このサイト・インストラクターのネタ帳で行われていました。
VBA(Visual Basic for Applications)を使って、指定したフォルダの、ファイル名と更新日時の一覧を作成する方法を探している方による検索でしょうか。
このサイトでは、FileSystemObjectを使わない、Dir関数を使ったファイル名一覧を作成するマクロをご紹介しています。
ファイル名と更新日時の一覧を作成するサンプルマクロ
このファイル名一覧作成マクロを、少しだけ修正すれば、指定したフォルダのファイル名と更新日時を一覧を作成するマクロができます。
Dim fld As FileDialog
Dim fol_path As String ' フォルダーのフルパス
Dim f_name As String ' ファイル名
Dim i As Long
Set fld = Application.FileDialog(msoFileDialogFolderPicker)
If fld.Show = 0 Then Exit Sub 'キャンセル時
fol_path = fld.SelectedItems(1) 'フォルダのフルパスを変数に格納
f_name = Dir(fol_path & "\*") '指定されたフォルダの一つ目のファイル名を取得
If f_name = "" Then MsgBox "ファイルが存在しません。": Exit Sub
Worksheets.Add Before:=Sheets(1)
Range("A1").Value = fol_path
Range("A2").Value = "のファイル一覧"
Range("A4").Value = "ファイル名"
Range("B4").Value = "最終更新日時"
ChDir fol_path & "\" 'カレントフォルダの変更
i = 5
Do Until f_name = ""
Cells(i, "A").Value = f_name
Cells(i, "B").Value = FileDateTime(f_name)
i = i + 1
f_name = Dir '次のファイル名を取得
Loop
End Sub
上記のマクロを実行すると、フォルダを指定するダイアログが表示され、指定されたフォルダのファイル名と最終更新日時の一覧が、先頭に挿入されたワークシートに作成されます。
サンプルマクロの解説
基本的な考え方は、既にご紹介しているDir関数を使ってファイル名一覧を作成するマクロと同じです。そこに最終更新日時を取得する処理が追加されているだけです。
更新日時を取得しているのは、Do Until ~ Loop文の中の
Cells(i, "B").Value = FileDateTime(f_name)
の部分です。
VBAでは、FileDateTime関数でファイルの最終更新日時を取得できます。
FileDateTime関数の引数指定をシンプルにするために、Do Until ~ Loop文に入る直前に
ChDir fol_path & "\"
と、カレントフォルダの変更を行っています。
Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » ファイル名と更新日時の一覧を作成するExcelマクロ-FileDateTime関数