Sub sample2()
Dim fPath As String
Dim f_name As String
Dim i As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' ワークシートの指定
ws.Range("A2:B" & ws.Rows.Count).ClearContents ' データをクリア
fPath = "C:\Users\user\Downloads" ' フォルダのパス
ListFilesInFolder fPath, ws ' ファイル情報をシートに書き込み
SortDataByFileNames ws ' データをファイル名で昇順にソート
End Sub
Sub ListFilesInFolder(ByVal folderPath As String, ByRef ws As Worksheet)
Dim f_name As String
Dim i As Long
Dim fso As Object
Dim folder As Object
Dim file As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(folderPath)
i = 2
For Each file In folder.Files
ws.Cells(i, 2).Value = file.Name
ws.Cells(i, 1).Value = file.DateLastModified
i = i + 1
Next file
End Sub
Sub SortDataByFileNames(ByRef ws As Worksheet)
With ws.Sort
.SortFields.Clear
.SortFields.Add Key:=ws.Range("A:A"), Order:=xlAscending
.SetRange ws.Range("A1:B" & ws.Cells(ws.Rows.Count, 2).End(xlUp).Row)
.Header = xlYes
.Apply
End With
End Sub
以下のコードはプロジャーで分けてるだけで、上記と同じです。
Sub sample2()
Dim fPath As String
Dim f_name As String
Dim i As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' ワークシートの指定
ws.Range("A2:B" & ws.Rows.Count).ClearContents ' データをクリア
fPath = "C:\Users\user\Downloads" ' フォルダのパス
ListFilesInFolder fPath, ws ' ファイル情報をシートに書き込み
SortDataByFileNames ws ' データをファイル名で昇順にソート
End Sub
Sub ListFilesInFolder(ByVal folderPath As String, ByRef ws As Worksheet)
Dim f_name As String
Dim i As Long
Dim fso As Object
Dim folder As Object
Dim file As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(folderPath)
i = 2
For Each file In folder.Files
ws.Cells(i, 2).Value = file.Name
ws.Cells(i, 1).Value = file.DateLastModified
i = i + 1
Next file
End Sub
Sub SortDataByFileNames(ByRef ws As Worksheet)
With ws.Sort
.SortFields.Clear
.SortFields.Add Key:=ws.Range("A:A"), Order:=xlAscending
.SetRange ws.Range("A1:B" & ws.Cells(ws.Rows.Count, 2).End(xlUp).Row)
.Header = xlYes
.Apply
End With
End Sub
Dir関数でフォルダ内のファイル名書き出しと並べ替え
ファイルの一覧を取得するために Dir関数を使用した例です。
Sub sample()
Dim fPath As String
Dim f_name As String
Dim i As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' ワークシートの指定
ws.Range("A2:B" & ws.Rows.Count).ClearContents ' データをクリア
fPath = "C:\Users\user\Downloads" ' フォルダのパス
f_name = Dir(fPath & "\*") ' フォルダ内のファイルを取得
ChDir fPath & "\" ' ワークディレクトリを設定
i = 2 ' ファイル情報をシートに書き込み
Do Until f_name = ""
ws.Cells(i, 1).Value = f_name
ws.Cells(i, 2).Value = FileDateTime(f_name)
i = i + 1
f_name = Dir
Loop
With ws.Sort ' データを作成日時で昇順にソート
.SortFields.Clear
.SortFields.Add Key:=ws.Range("B:B"), Order:=xlAscending
.SetRange ws.Range("A1:B" & ws.Cells(ws.Rows.Count, 2).End(xlUp).Row)
.Header = xlYes
.Apply
End With
End Sub
説明
7行目:ワークシートの指定
8行目:データをクリア
9行目:フォルダのパス
10行目:フォルダ内のファイルを取得
11行目:ワークディレクトリを設定
13~19行目:フォルダ内のファイルを反復処理するために Do Until ループを使用しています。