『Excelでファイル一覧』FileSystemObject編 その3
今回は指定したフォルダ直下のフォルダ名とファイル名を取得するプログラムです。
前々回の「その1」を参考に参照設定を行ってください。
■リスト作成用のワークシートを準備する
・ワークシートに以下のような項目を用意します。
■標準モジュールの挿入
・VBAで標準モジュールを挿入し、以下のコードを入力してください。
————————————————————
Sub GetFileList()
Dim fso As FileSystemObject
Dim objFolder As Folder
Dim objSubFolderSub As Folder
Dim objFile As File
Dim strDir As String
Dim i As Long
strDir = “C:\tmp” ‘—①
Set fso = CreateObject(“Scripting.FileSystemObject”)
If Not fso.FolderExists(strDir) Then ‘—②
MsgBox (“指定のフォルダは存在しません”)
Exit Sub
End If
i = 2 ’アクティブなシートの2行目から出力
‘サブフォルダ一覧
Set objFolder = fso.GetFolder(strDir) ‘—③
For Each objsubfolder In objFolder.SubFolders ‘—④
Cells(i, 2).Value = objsubfolder.Name ‘—⑤
Cells(i, 4).Value = objsubfolder.DateLastModified ‘—⑥
i = i + 1 ‘—⑦
Next
‘ファイル一覧
For Each objFile In objFolder.Files ‘—⑧
With objFile
Cells(i, 2).Value = .Name ‘—⑨
Cells(i, 3).Value = .Size ‘—⑩
Cells(i, 4).Value = .DateLastModified ‘—⑪
i = i + 1 ‘—⑫
End With
Next
Set fso = Nothing
Set objFolder = Nothing
Set objsubfolder = Nothing
End Sub
————————————————————
①:一覧を作成するフォルダ名に「C:¥tmp」をセットします。
②:フォルダが存在するかどうかのチェック。
③:「FileSystemObject」の「Folder」オブジェクトに「C:¥tmp」というフォルダをセットします。
④:「C:¥tmp」配下のフォルダを検索し、見つかった場合は
⑤:フォルダ名、⑥:更新日時 をワークシートに記載します。
⑦:ワークシートの記入行番号を1増やします。
※④でフォルダが見つからなくなるまで繰り返します。
⑧:「C:¥tmp」配下のファイルを検索し、見つかった場合は
⑨:ファイル名、⑩:サイズ、⑪:更新日時 をワークシートに記載します。
⑫:ワークシートの記入行番号を1増やします。
※⑧でファイルが見つからなくなるまで繰り返します。
※プログラムを入力する際は、以下のようにインデント(字下げ)を行えば
後から見やすくなります。
では、実行してみます。
C:¥tmpフォルダは以下のようになっています。
■実行結果
今回は指定したフォルダの直下のフォルダとファイルの一覧を作成しましたが、
次回はこれを改良して、サブフォルダ内の検索もできるようにします。
合わせてシート上にボタンを配置し、ボタンをクリックしてフォルダを選択できるようにします。