VBAでフォルダのプロパティのサイズ、ファイル数、フォルダ数を取得するコード
VBAでフォルダのプロパティのサイズ、ファイル数、フォルダ数を取得するコードを書きました。
フォルダを右クリックして、プロパティを表示するときと似たような内容を取得することができます。
フォルダサイズは、FileSystemObjectで取得できますが、サブフォルダを含めたフォルダ数、ファイル数は再帰的に取得する必要があります。
以下、VBAでフォルダのプロパティのサイズ、ファイル数、フォルダ数を取得するコードです。
Sub フォルダ情報取得()
Dim dblSize As Double
Dim sDir As String
sDir = “C:\Temp”
dblSize = フォルダサイズ取得(sDir)
Range("A1").Value = dblSize
Range("B1").Value = "バイト"
Range("A2").Value = Int(dblSize / 1024)
Range("B2").Value = "KB"
Range("A3").NumberFormatLocal = "0.00"
Range("A3").Value = dblSize / 1024 / 1024
Range("B3").Value = "MB"
Range("A4").NumberFormatLocal = "0.00000"
Range("A4").Value = dblSize / 1024 / 1024 / 1024
Range("B4").Value = "GB"
Dim lFolderCount As Long
Dim lFileCount As Long
フォルダ数ファイル数取得 sDir, lFolderCount, lFileCount
Range("A5").Value = lFolderCount
Range("B5").Value = "フォルダ数"
Range("A6").Value = lFileCount
Range("B6").Value = "ファイル数"
End Sub
Private Function フォルダサイズ取得(sDir As String) As Double
Dim fso As Object
Set fso = CreateObject(“Scripting.FileSystemObject”)
フォルダサイズ取得 = fso.GetFolder(sDir).Size
End Function
Private Sub フォルダ数ファイル数取得(strTargetDir As String, ByRef lFolderCount As Long, ByRef lFileCount As Long)
Dim fso As Object
Dim folder As Object
Dim subfolder As Object
Dim file As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(strTargetDir)
lFolderCount = lFolderCount + folder.subFolders.Count
lFileCount = lFileCount + folder.Files.Count
For Each subfolder In folder.subFolders
’再帰的にチェック
フォルダ数ファイル数取得 subfolder.Path, lFolderCount, lFileCount
Next subfolder
End Sub