VB6フォルダの合計ファイルサイズを取得する

スポンサーリンク

VB6 では、FileSystemObject (FSO) から Folder オブジェクトを生成します。そして、Files プロパティから File オブジェクトを列挙し、Size プロパティを合計します。サブディレクトリは、SubFolders プロパティから列挙し、再帰呼び出しをすることで対処します。

FileSystemObject を使用する場合は、[プロジェクト] メニューの [参照設定] を選択して「Microsoft Scripting Runtime」にチェックを付けてください。

サンプルコード

以下にサンプルコードを示します。

VB6.0 以前
' ----------------------------------------------------------------------------
' @Summary              指定したディレクトリの合計ファイルサイズを取得します。
' @Param    stDirPath   合計ファイルサイズを求めるディレクトリのパス。
' @Returns              ディレクトリの合計ファイルサイズ。
' ----------------------------------------------------------------------------
Public Function GetDirectoryFileSize(ByVal stDirPath As String) As Long
    ' FileSystemObject (FSO) の新しいインスタンスを生成する
    Dim cFso As New FileSystemObject
    Set cFso = New FileSystemObject

    ' 処理対象となる Folder オブジェクトを取得する
    Dim cRootFolder As Folder
    Set cRootFolder = cFso.GetFolder(stDirPath)

    ' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす)
    Set cFso = Nothing

    Dim lTotalSize As Long
    Dim cFile      As File

    ' ディレクトリ内のすべてのファイルサイズを加算する
    For Each cFile In cRootFolder.Files
        lTotalSize = lTotalSize + cFile.Size
    Next cFile

    ' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす)
    Set cFile = Nothing

    Dim cSubFolder As Folder

    ' サブディレクトリ内のすべてのファイルサイズを加算する (再帰)
    For Each cSubFolder In cRootFolder.SubFolders
        lTotalSize = lTotalSize + GetDirectoryFileSize(cSubFolder.Path)
    Next cSubFolder

    ' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす)
    Set cRootFolder = Nothing
    Set cSubFolder  = Nothing

    ' 合計ファイルサイズを返す
    GetDirectoryFileSize = lTotalSize
End Function

使用例は以下のようになります。

VB6.0 以前
    ' 合計ファイルサイズを格納する変数を宣言する
    Dim lTotalFileSize As Long

    ' 合計ファイルサイズを取得する
    lTotalFileSize = GetDirectoryFileSize("C:\Hoge\")

    ' 取得した合計ファイルサイズを表示する
    MessageBox.Show(CStr(lTotalSize) & " バイト")

関連するリファレンス

準備中です。

スポンサーリンク