本ページには広告が含まれています。

VBA FileLen 関数 ファイルのサイズをバイト単位で返す

VBA FileLen 関数 ファイルのサイズをバイト単位で返す

Excel VBAの「FileLen 関数」について解説します。

スポンサーリンク

FileLen 関数とは

Excel VBA の FileLen 関数は、指定したファイルのサイズをバイト単位で返します。ファイル内にデータが存在しているかどうかを確認する際にも利用できます。

FileLen 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。

FileLen 関数(Visual Basic for Applications リファレンス)

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

FileLen(pathname)

引数

引数 説明
pathname【必須】ファイルのパスを示す文字列式を指定します
フォルダ名およびドライブ名を含めることができます
スクロールできます

戻り値

戻り値説明
ファイルサイズ
(Long)
ファイルのサイズ (長さ) をバイト単位で返します
スクロールできます

解説(使用例)

FileLen 関数の使い方について、サンプルを使って解説します。

FileLen 関数サンプル

FileLen 関数の基本的な使い方をサンプルで確認しましょう。

指定ファイルのサイズを取得する基本的な例

指定したファイルのサイズ (バイト数) をメッセージボックスで表示します。

'■FileLen関数使用例1(エラーハンドリング付き)
Sub FileLen_Sample01()
    Dim filePath As String
    Dim fileSize As Long
 
    ' エラーハンドリングを開始
    On Error GoTo ErrorHandler
    
    ' 対象のファイルパスを指定
    filePath = "C:\VBA_test\bas\Module1.bas"
    ' FileDateTime関数でファイルの最終更新日時を取得
    fileSize = FileLen(filePath)
    ' 取得した日時情報を表示
    MsgBox "ファイルのサイズは: " & fileSize & " bytes."

    Exit Sub
ErrorHandler:
    MsgBox "実行時エラー '" & Err.Number & "': " & vbCrLf & _
           Err.Description, vbCritical, "FileLen_Sample Error"
End Sub
VBA

このVBAコードを実行すると、指定したファイルから取得したサイズが MsgBox に表示されます。

FileLen_Sample01 実行結果のメッセージ画像

【コードの補足説明】

・7行目、エラーハンドリングを設定しています。

・10行目、ファイルのパスを変数に格納します。

・12行目、FileLen 関数を使用して指定されたファイルのサイズを取得して変数に格納します。

・14行目、MsgBox に取得したファイルのサイズ(バイト単位)を表示します。

・17~19行目、エラーが発生した場合に実行されるコードを記載しています。

【注意点】

・エラーハンドリングを設定しない場合、ファイルパスが存在しない等の実行時エラーが発生するとコードが途中で中断されてしまいます。

フォルダ内の全ファイルのサイズを取得する応用例

Dir関数FileLen関数を併用して、指定フォルダ内に存在する複数ファイルのサイズを取得するサンプルです。

'■FileLen関数使用例2(Dir関数でフォルダ内一括取得する例)
Sub FileLen_Sample02()
    Dim folderPath As String, fileName As String
    Dim fileSize As Long, totalSize As Long
    Dim str As String
    
    ' エラーハンドリングを開始
    On Error GoTo ErrorHandler
    
    ' 対象フォルダのパスを設定
    folderPath = "C:\VBA_test\bas\"
    ' Dir関数で最初のファイル名を取得
    fileName = Dir(folderPath & "*.*")
    ' フォルダ内の全ファイル数回ループ処理
    Do While fileName <> ""
        ' ファイルサイズを取得
        fileSize = FileLen(folderPath & fileName)
        ' サイズを合計する
        totalSize = totalSize + fileSize
        ' ファイル名とサイズを保存
        str = str & fileName & " is " & _
            Format(fileSize, "#,###") & " bytes." & vbCrLf
        ' Dir関数で次のファイル名を取得
        fileName = Dir()
    Loop
    ' 取得できた情報を表示
    MsgBox str & "Total size of all files: " & _
                Format(totalSize, "#,###") & " bytes."
                
    Exit Sub
ErrorHandler:
    MsgBox "実行時エラー '" & Err.Number & "': " & vbCrLf & _
           Err.Description, vbCritical, "FileLen_Sample Error"
End Sub
VBA

コード実行でフォルダ内の全ファイルからサイズを取得して次のように MsgBox に表示します。

FileLen_Sample02 実行結果もメッセージ画像

【コードの補足説明】

・13行目、Dir 関数で最初のファイル名を取得しています。ここではファイルの種類を全種(*.*)に設定していますが、(*.txt)のように拡張子を指定することで種別を絞ることができます。

・15行目、Do While fileName <> “” 条件が満たされるまで(fileName <> "")ループを続けます。

・19行目、変数 totalSize を使って各ファイルのサイズを加算していきます。

・24行目、次のファイル名を Dir 関数で取得します。取得できなかった場合 fileName = "" となるのでループが終了します。

・27行目、取得できた情報を MsgBox に表示します。

Module2.bas のファイルサイズが 0 Byteなので、ファイルの中身が無いことが確認できます。おそらくファイル保存時になんらかの原因で失敗したなどが考えられます。サイズが 0 Byteのファイルを見つけ出すのにも利用できそうですね。

おわりに

Excel VBA の FileLen 関数は、指定したファイルのサイズをバイト単位で取得するための関数です。

具体的にどのような場面で FileLen 関数が利用されるのか、思いついたものを列記しておきます。

  • ・ファイル保存やバックアップをする場合のディスク使用量を事前に把握しておくことで、ディスクスペースの不足による失敗を防止する。
  • ・肥大化しやすいログファイルなどのファイルサイズをチェックし、必要に応じて対象ファイルをバックアップしたり削除したりするなどの管理を行う。
  • ・記事で解説した 0 Byte などのファイルサイズに基づいて不要なファイルを削除して整理整頓する。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!