PR
フォルダの操作

【Excel VBA】指定したフォルダ内のファイル名とファイルサイズのリストを作成する

エクセルのマクロを使用して、フォルダダイアログで選択したフォルダ内に存在するファイル名とファイルサイズのリストを作成するマクロを紹介します。

以下のマクロを実行すると、
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”のコードの内容を編集することで、指定したフォルダ内のファイルに対してマクロ処理を行うように応用が利きます。

コメント