ファイルのサイズを取得する関数

以下が、タイトルの関数のサンプルです。

'************************************************************
'* 指定したファイルのサイズを取得する関数
'* 引数 : fileFullPath … ファイルのフルパス(例: "C:\data\sample.csv")
'* 戻り値 : ファイルサイズ(KB 単位、Long型)
'************************************************************
Function FuncFileSize(ByVal fileFullPath As String) As Long
    Dim fso As Object     ' FileSystemObject を格納するオブジェクト変数
    Dim file As Object    ' 取得したファイルオブジェクトを格納する変数
    Dim fileSize As Double ' ファイルサイズをバイト単位で受け取る変数(小数を保持できるように Double)
    
    '--- FileSystemObject を作成 ---
    ' FSO はファイルやフォルダ操作に便利な COM コンポーネント
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    '--- 指定されたファイルのオブジェクトを取得 ---
    ' fileFullPath で渡されたパスのファイルを参照する
    Set file = fso.GetFile(fileFullPath)
    
    '--- ファイルサイズを取得 ---
    ' Size プロパティはバイト単位のファイルサイズを返す
    fileSize = file.Size
    
    '--- 後処理 ---
    ' 参照していたオブジェクトを解放してメモリリークを防ぐ
    Set file = Nothing
    Set fso = Nothing
    
    '--- 戻り値設定 ---
    ' バイト単位から KB 単位に変換して返す
    ' 1KB = 1024 バイトのため、1024 で割る
    ' Long 型に代入されるため、小数点以下は切り捨てとなる
    FuncFileSize = fileSize / 1024
    
End Function

📌 ポイント

  • file.Size はバイト単位なので、必ず 1024 で割る必要があります。
  • 戻り値を Long にしているので、小数点以下は自動で切り捨てられます。
    → より厳密に「四捨五入」や「小数点付き KB」を扱いたいなら、Double を戻り値にすべきです。

Follow me!