FileLen、LOF関数

FileLen 関数は開かれていないファイルのサイズをバイト単位で返します。
この関数を開かれているファイルに使用すると、開かれる前のファイルサイズを返します。

LOF 関数はOpen ステートメントを使用して開いたファイルのサイズをバイト単位で返します。

スポンサーリンク

FileLen関数の使用方法

構文
FileLen(PathName)

【戻り値】 長整数型 (Long)
引数名 省略 説明
PathName × ファイルパス(絶対パスまたは相対パス)を表す文字列式を指定します。 相対パスを指定したときの基準はカレントフォルダ になります。

LOF関数の使用方法

構文
LOF(FileNumber)

【戻り値】 長整数型 (Long)
引数名 省略 説明
FileNumber × 任意の有効なファイル番号を表す整数型 (Integer) の数値を指定します。

FileLen、LOF関数の使用例

テキストファイルの更新前、更新中、更新後のファイルサイズを取得して、イミディエイトウィンドウへ表示する例です。
サンプルで使用したテキストファイルには、改行コード(vbCr + vbLf)2バイトが各行に含まれています。

Sub sample_ef07b_01()
    Dim FileNumber      As Integer
    Dim FilePath        As String
    Dim i               As Integer

    '使用可能なファイル番号を取得します。
    FileNumber = FreeFile

    '入力ファイルパスの設定
    FilePath = ThisWorkbook.Path & "¥test_ef07b_01.txt"

    '入力ファイルの存在チェック
    If Dir(FilePath) = "" Then
        MsgBox "入力ファイルが存在しません。", vbCritical
        '入力ファイルがない場合はここで処理を終了
        End
    End If

    'ファイルサイズをイミディエイトウィンドウへ出力
    Debug.Print "更新前:" & FileLen(FilePath) & " Byte"

    'テキストファイルを追加出力モードで開きます。
    Open FilePath For Append As #FileNumber

    For i = 1 To 5
        Print #FileNumber, CStr(i)
        'ファイルサイズをイミディエイトウィンドウへ出力
        Debug.Print "更新中:i = " & i & "  " & LOF(FileNumber) & " Byte"
    Next i

    Close #FileNumber

    'ファイルサイズをイミディエイトウィンドウへ出力
    Debug.Print "更新後:" & FileLen(FilePath) & " Byte"
End Sub

 テキストファイル新規作成 ThisWorkbook
 ワークブックの名前とパス Dir関数

下図は入力ファイルの内容です。改行コード(2バイト)が含まれています。

sample_ef07b_01実行前
sample_ef07b_01実行前

上記サンプルマクロの実行結果です。連番が追加出力されています。

sample_ef07b_01実行結果
sample_ef07b_01実行結果
  • マクロ実行結果(イミディエイトウィンドウ
    更新前:5 Byte
    更新中:i = 1  8 Byte
    更新中:i = 2  11 Byte
    更新中:i = 3  14 Byte
    更新中:i = 4  17 Byte
    更新中:i = 5  20 Byte
    更新後:20 Byte

 
CSVファイル内の数値を2倍にする
ファイルシステムオブジェクトを利用したファイルおよびフォルダ操作

タイトルとURLをコピーしました