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