フォルダのプロパティを開くと、フォルダのサイズと、ファイル数、フォルダー数を確認できます。
それと同じ情報を取得します。
ネットワークドライブでも取得できます。
ファイルサイズは LongLong を使用しているので64bitプラットフォームで使用してください。
この関数を使って、フォルダの容量監視 を作成しました。
【例】
' 情報格納用の構造体
Type FolderInfo
FolderCount As Long
FilesCount As Long
End Type
Sub GetFolderSize()
Dim fd As FolderInfo
GetFolderCount Range("B1"), fd
' 指定したフォルダのファイルとフォルダの数を取得
MsgBox "ファイル数 : " & fd.FilesCount & vbLf & _
"フォルダ数 : " & fd.FolderCount & vbLf & _
"サイズ : " & GetFolderSize(Range("B1"))
End Sub
【関数化】
' 指定したフォルダのファイルとフォルダの数を取得
Sub GetFolderCount(ByVal foldername As String, ByRef fData As FolderInfo)
Dim path As Variant
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
For Each path In fso.GetFolder(foldername).SubFolders
' 再帰検索
GetFolderCount CStr(path), fData
' フォルダの件数を取得
fData.FolderCount = fData.FolderCount + 1
Next
' ファイルの数を取得
fData.FilesCount = fData.FilesCount + fso.GetFolder(foldername).Files.Count
Set fso = Nothing
End Sub
' 指定したフォルダのサイズを取得
Function GetFolderSize(ByVal foldername As String) As LongLong
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダのサイズを取得
GetFolderSize = fso.GetFolder(foldername).Size
Set fso = Nothing
End Function




コメント