概要

FileType関数は、VBAで指定したファイルのタイプを取得するための関数です。通常、ファイルがテキスト、バイナリ、またはその他の種類であるかを判別するために使用されます。しかし、実際にはVBAに標準で含まれる関数ではなく、独自に定義して利用することが一般的です。そのため、本記事では、VBAでファイルの種類を判定するカスタム関数の作成方法について説明します。

カスタムFileType関数の作成

VBAには標準でFileType関数が存在しないため、ファイルの拡張子をもとにファイルタイプを判定するカスタム関数を作成します。以下は、その例です。

基本的なFileType関数の作成

Function FileType(filePath As String) As String
    Dim fileExtension As String

    ' ファイルの拡張子を取得
    fileExtension = LCase(Right(filePath, Len(filePath) - InStrRev(filePath, ".")))

    ' 拡張子によってファイルタイプを判定
    Select Case fileExtension
        Case "txt"
            FileType = "テキストファイル"
        Case "xls", "xlsx"
            FileType = "Excelファイル"
        Case "doc", "docx"
            FileType = "Wordファイル"
        Case "pdf"
            FileType = "PDFファイル"
        Case "jpg", "jpeg", "png", "gif"
            FileType = "画像ファイル"
        Case "zip"
            FileType = "圧縮ファイル"
        Case Else
            FileType = "不明なファイルタイプ"
    End Select
End Function

この関数は、指定されたファイルパスから拡張子を取得し、それに基づいてファイルタイプを判定します。

使用例 - ファイルのタイプを判定する

次のコードでは、FileType関数を使用して、指定されたファイルのタイプを判定し、メッセージボックスで表示します。

Sub ShowFileType()
    Dim filePath As String
    Dim fileType As String

    ' ファイルのパスを指定
    filePath = "C:\Example\sample.txt"

    ' ファイルタイプを取得
    fileType = FileType(filePath)

    ' ファイルタイプを表示
    MsgBox "ファイルタイプは: " & fileType
End Sub

この例では、指定されたファイルのパスをFileType関数に渡し、ファイルの種類を判定して表示します。

カスタムFileType関数の拡張

FileType関数を拡張して、他のファイルタイプも判定できるようにすることができます。例えば、動画ファイルやオーディオファイルなどの判定を追加することが可能です。

Function FileType(filePath As String) As String
    Dim fileExtension As String

    ' ファイルの拡張子を取得
    fileExtension = LCase(Right(filePath, Len(filePath) - InStrRev(filePath, ".")))

    ' 拡張子によってファイルタイプを判定
    Select Case fileExtension
        Case "txt"
            FileType = "テキストファイル"
        Case "xls", "xlsx"
            FileType = "Excelファイル"
        Case "doc", "docx"
            FileType = "Wordファイル"
        Case "pdf"
            FileType = "PDFファイル"
        Case "jpg", "jpeg", "png", "gif"
            FileType = "画像ファイル"
        Case "zip"
            FileType = "圧縮ファイル"
        Case "mp4", "avi", "mov"
            FileType = "動画ファイル"
        Case "mp3", "wav", "aac"
            FileType = "オーディオファイル"
        Case Else
            FileType = "不明なファイルタイプ"
    End Select
End Function

この関数では、動画やオーディオファイルの判定を追加しており、より多くのファイルタイプに対応しています。

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

ファイルが存在しない場合や拡張子が取得できない場合には、エラーハンドリングを追加することで、より安全に使用することができます。

Function FileType(filePath As String) As String
    On Error GoTo ErrorHandler

    Dim fileExtension As String

    ' ファイルの存在確認
    If Dir(filePath) = "" Then
        FileType = "ファイルが存在しません"
        Exit Function
    End If

    ' ファイルの拡張子を取得
    fileExtension = LCase(Right(filePath, Len(filePath) - InStrRev(filePath, ".")))

    ' 拡張子によってファイルタイプを判定
    Select Case fileExtension
        Case "txt"
            FileType = "テキストファイル"
        Case "xls", "xlsx"
            FileType = "Excelファイル"
        Case "doc", "docx"
            FileType = "Wordファイル"
        Case "pdf"
            FileType = "PDFファイル"
        Case "jpg", "jpeg", "png", "gif"
            FileType = "画像ファイル"
        Case "zip"
            FileType = "圧縮ファイル"
        Case "mp4", "avi", "mov"
            FileType = "動画ファイル"
        Case "mp3", "wav", "aac"
            FileType = "オーディオファイル"
        Case Else
            FileType = "不明なファイルタイプ"
    End Select

    Exit Function

ErrorHandler:
    FileType = "エラーが発生しました。ファイルパスを確認してください。"
End Function

まとめ

FileType関数は、VBAに標準で存在する関数ではありませんが、カスタム関数を作成することで簡単にファイルの種類を判定することができます。ファイル管理や分類、特定のタイプのファイルのみを処理する場合などに役立ちます。必要に応じてエラーハンドリングを追加し、より安全で柔軟な関数に拡張することも可能です。