今回は、ファイルやフォルダのサイズ(容量)を取得する方法をご紹介します。
ファイルサイズを取得した後、KB(キロバイト)やMB(メガバイト)等への換算方法も併せてご紹介します。
- 基本構文から引数など、基礎知識から丁寧に解説します。
- ファイルサイズ取得後、KB(キロバイト)やMB(メガバイト)などの単位変換についても解説します。
- コピペで使える実践的なコードを解説します。
前提
ファイルサイズを取得する関数 及び メソッド
# | 関数/プロパティ | 説明 |
---|---|---|
1 | FileLen | ファイルサイズを取得する |
2 | Size | FileSystemObjectのFile/Folderオブジェクトのプロパティ ファイルやフォルダのサイズを取得する |
KB(キロバイト)やMB(メガバイト)の換算について
前項にて、取得ファイルサイズの単位はバイトであることをご説明しました。
バイトは、ファイルサイズを測るうえでの最小単位であるため、正確なファイルサイズを調べる上ではメリットもあります。
他方で、KB(キロバイト)やMB(メガバイト)に変換したい場合もあるかと思います。
以下にKB(キロバイト)やMB(メガバイト)の変換の数式を示します。
※「^」はべき乗です。(例:1024 ^ 2 … 1024の2乗)
# | 単位 | 数式 |
---|---|---|
1 | KB(キロバイト) | ファイルサイズ(バイト単位) ÷ 1024 |
2 | MB(メガバイト) | ファイルサイズ(バイト単位) ÷ (1024 ^ 2) |
3 | GB(ギガバイト) | ファイルサイズ(バイト単位) ÷ (1024 ^ 3) |
4 | TB(テラバイト) | ファイルサイズ(バイト単位) ÷ (1024 ^ 4) |
基本情報
FileLen関数
ファイルサイズを取得するには、FileLen関数を使用します。
FileLen関数は、特定の単体ファイルのファイルサイズを場合に最適です。
※フォルダのサイズを取得するには、後述する「Sizeプロパティ」を参照ください。
構文
FileLen(PathName)
※緑色は引数です。
引数
# | 引数 | 必須/任意 | 説明 |
---|---|---|---|
1 | PathName | 必須 | ファイルパスを指定します。 ファイル名のみでも指定可能です。 ※ファイル名を指定した場合は、カレントディレクトリのファイルが対象となります。 |
Sizeプロパティ
FileSystemObjectを使用したファイルサイズ 及び フォルダサイズの取得は、File及びFolderオブジェクトのSizeプロパティを使用します。
Sizeプロパティは複数のファイル・フォルダを扱う場合に最適です。
FileObject.Size
FolderObject.Size
Fileオブジェクト、Folderオブジェクトの取得方法については以下の記事にて解説しています。


サンプルコード
ファイルサイズを出力する(FileLen関数)
Public Sub getFileSize()
Dim filePath As String
Dim fileSize As Long
' ファイルパスをセット
filePath = "C:\vba-hack\vba\TestFile.txt"
' ファイルサイズを取得
fileSize = FileLen(filePath)
' セルに情報を書き出し
Range("A1").Value = filePath ' ファイルパス
Range("B1").Value = fileSize ' ファイルサイズ
End Sub
フォルダ配下のファイルサイズを一覧で出力する(Sizeプロパティ)
Public Sub getFileSizeForTargetFolder()
Dim fso As New FileSystemObject ' FileSystemObjectインスタンス
Dim myFolder As Folder ' Folderオブジェクト
Dim myFile As File ' Fileオブジェクト
Dim loopCnt As Long ' ループカウンタ
' フォルダオブジェクトを取得
Set myFolder = fso.GetFolder("C:\vba-hack\vba")
' フォルダ配下のファイル数分ループ
loopCnt = 1
For Each myFile In myFolder.Files
Cells(loopCnt, 1).Value = myFile.Name ' ファイル名
Cells(loopCnt, 2).Value = myFile.Size ' ファイルサイズ
loopCnt = loopCnt + 1
Next myFile
End Sub
フォルダ配下のファイルサイズをMB単位で一覧で出力する(Sizeプロパティ)
Public Sub getMBFileSizeForTargetFolder()
Dim fso As New FileSystemObject ' FileSystemObjectインスタンス
Dim myFolder As Folder ' Folderオブジェクト
Dim myFile As File ' Fileオブジェクト
Dim loopCnt As Long ' ループカウンタ
' フォルダオブジェクトを取得
Set myFolder = fso.GetFolder("C:\vba-hack\vba")
' フォルダ配下のファイル数分ループ
loopCnt = 1
For Each myFile In myFolder.Files
Cells(loopCnt, 1).Value = myFile.Name ' ファイル名
Cells(loopCnt, 2).Value = myFile.Size / (1024 ^ 2) ' ファイルサイズ
loopCnt = loopCnt + 1
Next myFile
End Sub

ファイルサイズは必要に応じて丸め処理を実施しましょう。
フォルダ配下のフォルダサイズを一覧で出力する(Sizeプロパティ)
Public Sub getFolderSizeForSubFolder()
Dim fso As New FileSystemObject ' FileSystemObjectインスタンス
Dim targetFolder As Folder ' 対象フォルダ
Dim subFolder As Folder ' サブフォルダ
Dim loopCnt As Long ' ループカウンタ
' フォルダオブジェクトを取得
Set targetFolder = fso.GetFolder("C:\vba-hack")
' フォルダ配下のフォルダ数分ループ
loopCnt = 1
For Each subFolder In targetFolder.SubFolders
Cells(loopCnt, 1).Value = subFolder.Name ' フォルダ名
Cells(loopCnt, 2).Value = subFolder.Size ' フォルダサイズ
loopCnt = loopCnt + 1
Next subFolder
End Sub
最後に
今回は、ファイルサイズを取得する方法を解説しました。
本記事が、皆さんのお力になれば幸いです!
コメント