フォルダ内のファイル一覧を作成するVBA
作成したExcelシートとVBE画面
シートにコマンドボタンを挿入し、デザインモードの状態でボタンをダブルクリックします。
下のVBE画面のようにVBAを入力します。
VBAコードの解説
コマンドボタンのクリックイベント
- 引数に一覧を作成するフォルダを指定し、ExGetFileListメソッドを呼び出します。
ExGetFileListメソッド
- セル位置を格納する変数を宣言します。
- オブジェクトの変数を宣言します。
- CreateObjectでFileSystemObjectオブジェクトの参照を作成します。
- GetFolderメソッドで、指定したフォルダのフォルダオブジェクトを取得します。
- 表示するセルの行位置をセットします。
- For Eachでフォルダオブジェクトのファイル数をループします。
- Nameプロパティでフォルダの名前を表示します。
- Pathプロパティで取得したファイル名から、GetBaseNameメソッドで拡張子を除いたものを表示します。
- Pathプロパティで取得したファイル名から、GetExtensionNameメソッドで拡張子を表示します。
- ParentFolderプロパティで、フォルダの親フォルダを取得します。
- Sizeプロパティでファイルサイズを取得し、Kbyteに変換し表示します。
- DateCreatedプロパティでフォルダの作成日時を表示します。
- DateLastModifiedプロパティでフォルダが最後に更新された日時を表示します。
- 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列から、ファイル名・ファイルの拡張子を除いたもの・ファイルの拡張子・フォルダ名・ファイルサイズ・作成された日付時刻・ファイルの最終更新された日付時刻・ファイルの最終アクセスの日付時刻が表示しています。