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

VBA LOF 関数 開いているファイルの長さ(Long)を返す

VBA LOF 関数 Openで開いたファイルの長さを返します

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

スポンサーリンク

LOF 関数とは

Excel VBA の LOF 関数は、Openステートメントで開いたファイルのサイズ(長さ)をバイト単位で表す値(Long)を返します。LOFLength Of File の略です。

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

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

スポンサーリンク

構文(引数と戻り値)

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

構文

LOF(filenumber)

引数

引数 説明
filenumber【必須】対象ファイルのファイル番号を指定します

※ Open ステートメントでファイルを開いた際に割り当てられた番号です。

戻り値

戻り値説明
バイト値
(Long)
開かれている対象ファイルのサイス(長さ)を返します

解説(使用例)

LOF 関数の基本的な使い方について、サンプルを使って解説します。

LOF 関数サンプル

LOF 関数を使用してファイル内の現在位置を取得する例です。

開いたファイルのサイズを取得する例

LOF 関数で、Open ステートメントで開いたファイルのサイズを取得して表示します。

'■LOF関数サンプル(ファイルサイズを取得する例)
Sub LOF_Sample()
    Dim fPath As String
    Dim fNum As Integer
    Dim fSize As Long

    ' Openステートメントでファイルを開く
    fPath = "c:\VBA_Sample\test.txt"  ' 読み込むファイルのパス
    fNum = FreeFile  ' 空きファイル番号取得
    Open fPath For Binary As #fNum ' ファイルを開く
    
    ' ファイルサイズを取得して表示
    fSize = LOF(fNum)
    MsgBox "ファイルサイズ: " & fSize & " バイト"
    
    ' ファイルを閉じる
    Close #fNum
End Sub

13行目の fSize = LOF(fNum) でファイルの長さを取得し、14行目の MsgBox で表示しています。

LOF_Sample の MsgBox画像

全角文字が2バイトになっているのがわかりますね。

ファイル操作の進行状況確認に利用する例

Loc 関数を併用してファイル操作の進行状況を表示する例です。

'■LOF関数サンプル2(ファイル内の現在位置を取得する例)
Sub LOF_Sample02()
    Dim fPath As String
    Dim fNum As Integer
    Dim fSize As Long
    Dim curLoc As Long
    Dim str As String

    ' Openステートメントでファイルを開く
    fPath = "c:\VBA_Sample\test.txt"  ' 読み込むファイルのパス
    fNum = FreeFile  ' 空きファイル番号取得
    Open fPath For Binary As #fNum ' ファイルを開く
    
    ' ファイルサイズを取得して表示
    fSize = LOF(fNum)
    
    ' ファイルの終端までループ
    Do While curLoc < fSize
        str = str & Input(1, #fNum) ' 1文字ずつ読み込む
        curLoc = Loc(fNum) ' 現在位置を取得
        ' 進捗状況をイミディエイトに表示
        Debug.Print "Progress: " & _
            Format((curLoc / fSize) * 100, "0.00") & "%"
    Loop

    ' ファイルを閉じる
    Close #fNum
    MsgBox "ファイル操作が完了しました!"
End Sub

LOF 関数で取得したファイルの長さを100%とし、Loc 関数で取得した現在位置から、進捗率を計算してファイル操作の進行状況を確認します。

イミディエイトの画像がこちらです。

処理状況をイミディエイト表示

【注意点】
・エラー処理をしていないので、ファイルが存在しない場合 Open ステートメントでエラーが発生します。
・LOF関数は、開かれているファイルにのみ使用可能です。未開のファイルを指定するとエラーになります。

「Bad file number」エラー

おわりに

VBA の LOF 関数は、開いているファイルのサイズ(バイト数)を取得するために使用されます。

LOF 関数は、ファイルが開かれていない場合にはエラーが発生するので、必ず Openステートメントの後に呼び出すようにします。

ファイルサイズを把握することで、ファイル操作の進捗管理を行ったり、ファイルサイズによってデータの処理を変更したりする場面などにも利用できます。

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

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

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

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

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

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