2015年5月8日金曜日

指定のフォルダの容量取得・確認を自動で行うマクロ

フォルダのサイズを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

この記事はお役に立てたでしょうか?
もし参考になると思っていただけたら、こちらのボタンから共有をお願いします。

このエントリーをはてなブックマークに追加