FileSystemObject
(FSO)を利用したファイル操作の基本は、操作したい対象のファイルやフォルダを、まず「オブジェクト」として取得することから始まります。
オブジェクトとして取得することで、そのファイルやフォルダが持つ様々な情報(名前、パス、サイズ、作成日時など)に簡単にアクセスできるようになります。
この記事では、FSOの**GetFile
メソッドとGetFolder
メソッド**を使い、ファイルやフォルダの情報を取得する基本的な方法を解説します。
【準備】参照設定
FSOを快適に利用するため、VBAエディタでツール
> 参照設定
を開き、**「Microsoft Scripting Runtime」**にチェックを入れておくことを推奨します。
完成したVBAコード
以下は、指定したファイルとフォルダの情報を取得し、その内容の一部をメッセージボックスに表示するVBAコードです。
'参照設定: Microsoft Scripting Runtime
Sub GetFileAndFolderInfo()
' 変数を宣言します
Dim fso As New FileSystemObject
Dim targetFile As File
Dim targetFolder As Folder
Dim message As String
'--- 設定 ---
Dim filePath As String
Dim folderPath As String
filePath = ThisWorkbook.FullName ' このExcelファイル自身を対象にする
folderPath = ThisWorkbook.Path ' このExcelファイルがあるフォルダを対象にする
'--- 設定ここまで ---
'--- 1. ファイルとフォルダのオブジェクトを取得 ---
' ファイルが存在するかを先に確認
If Not fso.FileExists(filePath) Then
MsgBox "指定されたファイルが見つかりません。", vbCritical
Exit Sub
End If
Set targetFile = fso.GetFile(filePath)
' フォルダが存在するかを先に確認
If Not fso.FolderExists(folderPath) Then
MsgBox "指定されたフォルダが見つかりません。", vbCritical
Exit Sub
End If
Set targetFolder = fso.GetFolder(folderPath)
'--- 2. オブジェクトのプロパティから情報を読み取る ---
message = "【ファイル情報】" & vbCrLf & _
"ファイル名: " & targetFile.Name & vbCrLf & _
"フルパス: " & targetFile.Path & vbCrLf & _
"サイズ: " & Format(targetFile.Size, "#,##0") & " バイト" & vbCrLf & _
"作成日時: " & targetFile.DateCreated & vbCrLf & _
"--------------------" & vbCrLf & _
"【フォルダ情報】" & vbCrLf & _
"フォルダ名: " & targetFolder.Name & vbCrLf & _
"親フォルダ: " & targetFolder.ParentFolder & vbCrLf & _
"含まれるファイル数: " & targetFolder.Files.Count & " 個"
'--- 3. 結果を表示 ---
MsgBox message, vbInformation, "ファイル・フォルダ情報の取得"
' オブジェクトを解放
Set targetFile = Nothing
Set targetFolder = Nothing
Set fso = Nothing
End Sub
コードのポイント解説
ファイルオブジェクトの取得: .GetFile
Set myFile = fso.GetFile("ファイルのフルパス")
GetFile
メソッドは、引数で指定されたパスのファイルをFile
オブジェクトとして返します。オブジェクトを取得する前には、fso.FileExists("パス")
でファイルの存在を確認しておくと、より安全なコードになります。
フォルダオブジェクトの取得: .GetFolder
Set myFolder = fso.GetFolder("フォルダのパス")
GetFolder
メソッドは、指定されたパスのフォルダをFolder
オブジェクトとして返します。こちらも同様に、fso.FolderExists("パス")
で存在確認をしてから取得するのが定石です。
主なプロパティ一覧
File
オブジェクトやFolder
オブジェクトを取得すると、以下のような多彩なプロパティにアクセスできるようになります。
File
オブジェクトの主なプロパティ
プロパティ | 説明 |
.Name | ファイル名(拡張子を含む) |
.Path | ファイルのフルパス |
.ParentFolder | 親フォルダのパス |
.Size | ファイルサイズ(バイト単位) |
.Type | ファイルの種類(例: “Microsoft Excel ワークシート”) |
.DateCreated | 作成日時 |
.DateLastModified | 最終更新日時 |
.DateLastAccessed | 最終アクセス日時 |
Folder
オブジェクトの主なプロパティ
プロパティ | 説明 |
.Name | フォルダ名 |
.Path | フォルダのフルパス |
.ParentFolder | 親フォルダのパス |
.Size | フォルダ内の全アイテムの合計サイズ(バイト単位) |
.Files | フォルダ内の全File オブジェクトのコレクション |
.SubFolders | フォルダ内の全Folder オブジェクトのコレクション |
.DateCreated | 作成日時 |
まとめ
FSOを使ったファイル操作は、まず対象をオブジェクトとして取得することから始まります。
- ファイルの場合:
fso.GetFile("パス")
- フォルダの場合:
fso.GetFolder("パス")
一度オブジェクトを取得してしまえば、.Name
や.Size
といったプロパティを参照するだけで、そのファイルやフォルダに関する詳細な情報を簡単に、そして直感的に取得することができます。