ファイルのサイズを取得する関数
以下が、タイトルの関数のサンプルです。
'************************************************************
'* 指定したファイルのサイズを取得する関数
'* 引数 : 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
を戻り値にすべきです。