フォルダのプロパティ(サイズとファイルの数)を取得

フォルダのプロパティを開くと、フォルダのサイズと、ファイル数、フォルダー数を確認できます。
それと同じ情報を取得します。
ネットワークドライブでも取得できます。
ファイルサイズは 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

コメント