エクセルのマクロを使用して、フォルダダイアログで選択したフォルダ内に存在するファイル名とファイルサイズのリストを作成するマクロを紹介します。
以下のマクロを実行すると、
1.フォルダダイアログが起動しますので、ファイル名とファイルサイズ情報を取得したいフォルダを選択してください
2.マクロを実行したエクセルのシートに対して、「指定したフォルダのパス」「ファイル名」「ファイルサイズ(byte)」のリストが作成されます。
Sub GetFileInfo()
Dim fso As Object
Dim fPath As String
Dim fldr As Object
Dim files As Object
Dim file As Object
Dim output() As Variant 'ファイル名、ファイルサイズを格納する配列
Dim i As Long
'ダイアログを開く
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Title = "フォルダを選択してください"
.Show
If .SelectedItems.Count = 0 Then
Exit Sub
Else
fPath = .SelectedItems(1)
End If
End With
Set fso = CreateObject("Scripting.FileSystemObject")
Set fldr = fso.GetFolder(fPath)
' フォルダ内の全てのファイルを取得
Set files = fldr.files
' 出力するリストを初期化
ReDim output(1 To files.Count, 1 To 2)
' ファイル名とファイルサイズをリストに格納
i = 1
For Each file In files
'一時ファイルがある場合はリスト化の対象から外す
If Left(file.Name, 2) = "~$" Then
Else
output(i, 1) = file.Name
output(i, 2) = file.Size
i = i + 1
End If
Next file
' リストを出力
Range("A1").Value = "フォルダパス"
Range("B1") = fldr
Range("A3").Value = "ファイル名"
Range("B3").Value = "ファイルサイズ(byte)"
Range("A4:B" & files.Count) = output
' 終了処理
Set fso = Nothing
End Sub
↓マクロ実行結果のイメージです。
このマクロは、リスト作成が目的ではない場合でも、”For Each file”のコードの内容を編集することで、指定したフォルダ内のファイルに対してマクロ処理を行うように応用が利きます。
コメント