概要

FileLen関数は、VBA(Visual Basic for Applications)で指定したファイルのサイズをバイト単位で取得するための関数です。この関数を使用することで、ファイルの容量チェックやサイズに応じた処理の分岐などが簡単に行えます。ファイルのパスを指定するだけで、そのサイズを返してくれるため、ファイル管理の自動化に非常に便利です。

構文

FileLen関数は以下の構文で使用されます。

FileLen(パス)
  • パス: サイズを取得する対象のファイルのフルパスまたは相対パスを指定します。

使用方法

基本的な使い方

FileLen関数の基本的な使い方は、ファイルのサイズを取得してその値をメッセージボックスに表示する方法です。

Sub SampleFileLen()
    Dim filePath As String
    filePath = "C:\Users\YourName\Documents\sample.txt"  ' 対象ファイルのパスを指定
    Dim fileSize As Long
    fileSize = FileLen(filePath)  ' ファイルサイズを取得
    MsgBox "ファイルのサイズは " & fileSize & " バイトです。"
End Sub

この例では、指定したsample.txtのサイズがバイト単位で表示されます。ファイルが存在することを前提にしていますが、存在しない場合はエラーが発生するため、エラーハンドリングを追加することを推奨します。

エラーハンドリングの追加

ファイルが存在しない場合や、アクセス権限がない場合、FileLen関数はエラーを返します。以下の例では、エラーハンドリングを追加して、エラーが発生した際にメッセージを表示するようにしています。

Sub SafeFileLen()
    Dim filePath As String
    filePath = "C:\Users\YourName\Documents\sample.txt"  ' 対象ファイルのパスを指定
    On Error GoTo ErrorHandler  ' エラーハンドラー設定
    Dim fileSize As Long
    fileSize = FileLen(filePath)  ' ファイルサイズを取得
    MsgBox "ファイルのサイズは " & fileSize & " バイトです。"
    Exit Sub
ErrorHandler:
    MsgBox "エラー: ファイルが存在しないか、アクセスできません。"
End Sub

このコードでは、ファイルが存在しない場合や読み取り権限がない場合にエラーメッセージが表示されます。On Error GoToステートメントを使用することで、エラー発生時の挙動を制御できます。

指定したフォルダ内のファイルサイズの合計を計算

以下の例では、指定したフォルダ内のすべてのファイルのサイズを合計して表示します。Dir関数とFileLen関数を組み合わせて使用します。

Sub TotalFileSizeInFolder()
    Dim folderPath As String
    folderPath = "C:\Users\YourName\Documents\"  ' 対象フォルダのパスを指定
    Dim fileName As String
    Dim totalSize As Long
    totalSize = 0
    fileName = Dir(folderPath & "*.*")  ' フォルダ内の最初のファイルを取得
    Do While fileName <> ""  ' ファイルが見つかる限りループ
        totalSize = totalSize + FileLen(folderPath & fileName)
        fileName = Dir  ' 次のファイルを取得
    Loop
    MsgBox "フォルダ内のファイルの合計サイズは " & totalSize & " バイトです。"
End Sub

この例では、指定フォルダ内のすべてのファイルのサイズが合計され、その結果が表示されます。

ファイルサイズに基づいた処理の分岐

ファイルのサイズに応じて異なる処理を行いたい場合もFileLen関数を活用できます。たとえば、サイズが特定の値を超えた場合にアラートを表示する例です。

Sub CheckFileSize()
    Dim filePath As String
    filePath = "C:\Users\YourName\Documents\largefile.txt"  ' 対象ファイルのパス
    On Error GoTo ErrorHandler
    Dim fileSize As Long
    fileSize = FileLen(filePath)
    If fileSize > 1000000 Then  ' サイズが1MBを超える場合
        MsgBox "ファイルサイズが1MBを超えています。処理を中止します。"
    Else
        MsgBox "ファイルサイズは正常範囲内です。処理を続行します。"
    End If
    Exit Sub
ErrorHandler:
    MsgBox "エラー: ファイルが存在しないか、アクセスできません。"
End Sub

このコードでは、largefile.txtのサイズが1MB(1,000,000バイト)を超える場合に警告を表示し、処理を中止します。

備考

  • FileLen関数は、ファイルのサイズをバイト単位で返します。大きなファイルサイズの場合は適切な単位(KB、MB、GBなど)に変換して表示することを検討してください。
  • ファイルが存在しない場合、FileLen関数はエラーを返します。そのため、エラーハンドリングを追加することが推奨されます。
  • FileLen関数は読み取り専用の操作であり、ファイルの内容には影響を与えませんが、ファイルが開いている場合などにはエラーが発生する可能性があります。 FileLen関数を活用することで、ファイルサイズのチェックやサイズに応じた処理の自動化が可能となります。ファイル管理の効率化にぜひ活用してください。