フォルダのサイズをVBAで取得したい
業務を行っていくうえで、フォルダのサイズを確認するということが多々発生します。主に部署で使っている共有ハードディスクの空き容量が不安になってきたときなどでしょうか。不要なフォルダは削除またはDVDなどに退避し、何とかやりくりを行っていく。そのために手動でちまちまとフォルダの容量を確認するのは、非常に面倒くさい。マクロを使用することで、自動でフォルダのサイズを取得できます。
指定のフォルダのサイズを取得する関数 サンプルコード
Private Sub write_file_size(sPath As String, lRow As Long)
'サイズの記入を行う関数
'引数:処理対象のファイル名
Dim fso As Object
Dim wbMain As Workbook
Dim wsMain As Worksheet
Dim lSize As Long
Dim lSizeCal As Long
Set wbMain = Workbooks(ThisWorkbook.Name)
Set wsMain = wbMain.Worksheets("存在チェック")
Set fso = CreateObject("Scripting.FileSystemObject")
lSize = fso.GETFolder(sPath).Size
lSizeCal = lSize / 1024
If lSizeCal > 1024 Then
wsMain.Cells(lRow, 6) = Round(lSize / 1048576, 1) & "MB"
Else
wsMain.Cells(lRow, 6) = Round(lSize / 1024, 1) & "KB"
End If
Set fso = Nothing
End Sub
なお、下記のサンプルコードは指定したパスのフォルダサイズを取得するものです。
こちらの指定のパス以下のサブフォルダパスを取得するような関数と組み合わせて使うと良いと思います。
指定のパス以下のサブフォルダ名を取得する関数 サンプルコード
Public Sub main(sPath As String)
Dim buf As String, msg As String
Dim wb As Workbook
Dim ws As Worksheet
Dim i As Integer
Set wb = Workbooks(sWb)
Set ws = wb.Worksheets("Sheet1")
i = 3
buf = Dir("sPath\*.*", vbDirectory)
Do While buf <> ""
If InStr(buf, ".") = 0 Then
ws.Cells(i, 2) = buf
i = i + 1
End If
buf = Dir()
Loop
End Sub
この記事はお役に立てたでしょうか?
もし参考になると思っていただけたら、こちらのボタンから共有をお願いします。