Excel VBA:フォルダ内のファイルリストを作成|サイズや日時も

FileSystemObjectオブジェクトのGetFolderメソッドを使用し、フォルダ内のファイル一覧を作成するVBAを掲載します。



Homeに戻る > Excel ファイル操作のTipsへ


ファイル一覧を作成するには、FileSystemObjectオブジェクトのGetFolderメソッドを使います。

GetFolderメソッドで取得した、フォルダオブジェクトでファイルサイズ・作成日時などを取得可能です。

GetFolderメソッドの一般的な使い方

オブジェクトの変数を宣言します。

  • Dim tSfo As Object
  • Dim tGf As Object

FileSystemObjectオブジェクトの参照を作成します。

  • Set tSfo = CreateObject("Scripting.FileSystemObject")

GetFolderメソッドでフォルダオブジェクトを取得します。

  • Set tGf= tSfo.GetFolder(strPath)

フォルダオブジェクトのプロパティ

  • Attributes:フォルダの属性を取得または設定します。
  • DateCreated:フォルダの作成日時を取得します。
  • DateLastAccessed:フォルダが最後にアクセスされた日時を取得します。
  • DateLastModified:フォルダが最後に更新された日時を取得します。
  • Drive:フォルダが存在するドライブの名前を取得します。
  • Files:フォルダ内の全てのファイルを取得します。
  • IsRootFolder:フォルダがルートフォルダかどうかをブール型で返します
  • Name:フォルダの名前を取得します。
  • ParentFolder:フォルダの親フォルダを取得します。
  • Path:フォルダのパスを取得します。
  • ShortName:フォルダの8.3形式の名前を取得します。
  • ShortPath:フォルダの8.3形式のパスを取得します。
  • Size:フォルダ内の全てのファイルの合計サイズを取得します。
  • SubFolders;フォルダ内の全てのサブフォルダを取得します。
  • Type:フォルダの種類を取得します。

実際にVBAを入力しテストされる場合は、一覧作成先のフォルダを作成するか変更してください。

関連する記事として「Dir フォルダ内のファイルを取得するExcel関数」を掲載していますので参照してください。




フォルダ内のファイル一覧を作成するVBA


作成したExcelシートとVBE画面

シートにコマンドボタンを挿入し、デザインモードの状態でボタンをダブルクリックします。

コマンドボタンを挿入ししたExcelシート

下のVBE画面のようにVBAを入力します。

VBAを入力したVBE画面

VBAコードの解説

コマンドボタンのクリックイベント

ExGetFileListメソッド

  1. セル位置を格納する変数を宣言します。
  2. オブジェクトの変数を宣言します。
  3. CreateObjectでFileSystemObjectオブジェクトの参照を作成します。
  4. GetFolderメソッドで、指定したフォルダのフォルダオブジェクトを取得します。
  5. 表示するセルの行位置をセットします。
  6. For Eachでフォルダオブジェクトのファイル数をループします。
  7. Nameプロパティでフォルダの名前を表示します。
  8. Pathプロパティで取得したファイル名から、GetBaseNameメソッドで拡張子を除いたものを表示します。
  9. Pathプロパティで取得したファイル名から、GetExtensionNameメソッドで拡張子を表示します。
  10. ParentFolderプロパティで、フォルダの親フォルダを取得します。
  11. Sizeプロパティでファイルサイズを取得し、Kbyteに変換し表示します。
  12. DateCreatedプロパティでフォルダの作成日時を表示します。
  13. DateLastModifiedプロパティでフォルダが最後に更新された日時を表示します。
  14. DateLastAccessedプロパティでフォルダが最後にアクセスされた日時を表示します。

フォルダ内のファイル一覧を作成するVBAコード

Option Explicit

'Excel VBAでフォルダ内のファイルリストを作成
Private Sub ExGetFileList(strPath As String)
    Dim i As Long
    Dim tSfo As Object
    Dim tGf As Object
    Dim tFi As Object
    Dim tSub As Object
    
    Set tSfo = CreateObject("Scripting.FileSystemObject")
    Set tGf = tSfo.GetFolder(strPath)
    i = 4
    For Each tFi In tGf.Files
        'ファイル名
        Cells(i, 2) = tFi.Name
        'パス内に含まれるファイルの拡張子を除いたものを取得
        Cells(i, 3) = tSfo.GetBaseName(tFi.Path)
        'ファイルの拡張子
        Cells(i, 4) = tSfo.GetExtensionName(tFi.Path)
        'フォルダ名
        Cells(i, 5) = tFi.ParentFolder.Path
        'ファイルサイズ KByte
        Cells(i, 6) = Int(tFi.Size / 1024)
        '作成された日付・時刻
        Cells(i, 7) = tFi.DateCreated
        'ファイルの最終更新された日付・時刻
        Cells(i, 9) = tFi.DateLastModified
        'ファイルの最終アクセスの日付・時刻
        Cells(i, 8) = tFi.DateLastAccessed
        i = i + 1
    Next
End Sub

Private Sub CommandButton1_Click()
    ExGetFileList "e:\MyDir"
End Sub

実行結果のExcelシート

B列から、ファイル名・ファイルの拡張子を除いたもの・ファイルの拡張子・フォルダ名・ファイルサイズ・作成された日付時刻・ファイルの最終更新された日付時刻・ファイルの最終アクセスの日付時刻が表示しています。




Homeに戻る > Excel ファイル操作のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved