VBA(Visual Basic for Applications)標準のDir関数とFileDateTime関数を使って、指定したフォルダに存在するファイルの一覧と最終更新日時の一覧を作成するExcelマクロをご紹介しています。
FileSystemObjectを使っても同じようなマクロを作ることができます。
ファイル名と更新日時の一覧を作成するサンプルマクロ
FileSystemObjectを利用する場合、以下のようなマクロになります。
Dim dlg As FileDialog
Dim fd_path As String
Dim fso As Object ' Scripting.FileSystemObject
Dim fl As Object ' Scripting.File
Dim i As Long
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
If dlg.Show = False Then Exit Sub
fd_path = dlg.SelectedItems(1)
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.GetFolder(fd_path).Files.Count < 1 Then
MsgBox fd_path & " にはファイルが存在しません。"
Set fso = Nothing
Exit Sub
End If
Worksheets.Add Before:=Sheets(1)
Range("A1").Value = fd_path
Range("A2").Value = "のファイル一覧"
Range("A4").Value = "ファイル名"
Range("B4").Value = "最終更新日時"
i = 5
For Each fl In fso.GetFolder(fd_path).Files
Cells(i, "A").Value = fl.Name
Cells(i, "B").Value = fl.DateLastModified
i = i + 1
Next fl
Set fso = Nothing
Columns("A:B").AutoFit
MsgBox Sheets(1).Name & "に一覧を作成しました。"
上記のマクロを実行すると、フォルダを指定するダイアログボックスが表示され、指定されたフォルダ内のファイル名がA5セルから下に、ファイルの最終更新日時がB5セルから下に表示されます。
サンプルマクロの解説
上記のマクロの作りは先日ご紹介した、FileSystemObjectを使ってファイル名一覧を作成するExcelマクロと同じです。
追加されている主な処理は、For Each ~ Next文の中の、
Cells(i, "B").Value = fl.DateLastModified
です。
FileSystemObjectのFileオブジェクトのDateLastModifiedプロパティで、ファイルの最終更新日時を取得できるので、
取得した更新日時をB列に書き出しています。
Home » FSO・FileSystemObjectの使い方 » ファイル名と更新日時の一覧を作成するExcelマクロ-File.DateLastModified