'
'******** AKIRA55.COM ******* https://akira55.com/filelist/
'
Sub fileList01() '選択したフォルダー(サブフォルダー含む)のファイル一覧作成
Dim Add As Range
Dim Hani As String
Cells.Clear 'シート内容をクリアー
Range("A1") = 1: Range("B1") = "ファイルパス"
Range("C1") = "容量(KB)": Range("D1") = "更新日時"
For Each Add In Range("A1:D1")
Add.Interior.ColorIndex = 20 '背景色を指定します。
Next Add
With Application.FileDialog(msoFileDialogFolderPicker) 'ダイアログボックスが表示されてフォルダー選択します。
If .Show = True Then
Call fileList_sub(.SelectedItems(1)) 'フォルダーが選択されていれば、サブプログラムを実行
Else
MsgBox "フォルダーを選択しませんでした。"
Exit Sub 'プログラム終了
End If
End With
Hani = Range("A1").CurrentRegion.Address(False, False) 'セルA1から始まる表の範囲を取得
Range(Hani).Borders.LineStyle = xlContinuous '格子罫線を作成:細実線
End Sub
'
【プログラム②】・・・サブプログラム
Sub fileList_sub(Path As String) '選択フォルダーパスを受け取りフォルダー内のファイル一覧を作成します。
Dim Sub_forlder As Object
Dim Temp As String
Dim I, F As Long
Temp = Dir(Path & "\*.*") '選択ファルダー内の最初のファイルを選択します。
Do While Temp <> "" '全てのファイルを繰り返します。
I = Range("A1") '行番号を代入
I = I + 1 'ファイル内容を転記する行番号を加算します。
Cells(I, "A") = I - 1 'A列に件数を表示します。
Cells(I, "B") = Path & "\" & Temp 'フォルダーパスとファイル名を表示します。
Cells(I, "C") = Format(FileLen(Path & "\" & Temp), "#,###,") & "KB" '容量をKB単位で表示
Cells(I, "D") = Format(FileDateTime(Path & "\" & Temp), "YYYY/MM/DD") '更新日時を表示
Range("A1") = I 'セルA1に件数カウントする。
Temp = Dir() '次のファイルを選択します。
Loop
With CreateObject("Scripting.FileSystemObject")
For Each Sub_forlder In .GetFolder(Path).SubFolders 'すべてのフォルダーを繰り返します。
Call fileList_sub(Sub_forlder.Path) '再帰呼び出しを行いフォルダパスからサブフォルダ内容を取得
Next Sub_forlder
End With
End Sub
'