Excel VBAの「LOF 関数」について解説します。
LOF 関数とは
Excel VBA の LOF 関数は、Openステートメントで開いたファイルのサイズ(長さ)をバイト単位で表す値(Long)を返します。LOF は Length 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 で表示しています。

全角文字が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関数は、開かれているファイルにのみ使用可能です。未開のファイルを指定するとエラーになります。

おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
VBA の LOF 関数は、開いているファイルのサイズ(バイト数)を取得するために使用されます。
LOF 関数は、ファイルが開かれていない場合にはエラーが発生するので、必ず Openステートメントの後に呼び出すようにします。
ファイルサイズを把握することで、ファイル操作の進捗管理を行ったり、ファイルサイズによってデータの処理を変更したりする場面などにも利用できます。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;