Last updated on

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