【Excel VBA】FSOでファイルやフォルダの情報を取得する方法 (GetFile, GetFolder)

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といったプロパティを参照するだけで、そのファイルやフォルダに関する詳細な情報を簡単に、そして直感的に取得することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次