フォルダ内のファイル一覧を取得する(FileSystemObjectを使う場合)
指定フォルダーの直下にあるファイル名を、新規シートのA2以降へ出力します。
実行前に確認
- Windows専用の例です。C:\Dataは例なので、自分で用意した練習用フォルダーの絶対パスに変更してください。
- 隠し・システム属性の項目も含みます。子フォルダー内へは再帰的に入りません。並び順は保証されません。
- WindowsのFileSystemObjectを使います。参照設定は不要です。
1サンプルコード
Sub Example4018()
On Error GoTo Failed
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim folderPath As String, folder As Object, item As Object
Dim ws As Worksheet, r As Long
folderPath = "C:\Data"
Set folder = fso.GetFolder(folderPath)
Set ws = ThisWorkbook.Worksheets.Add
ws.Columns("A").NumberFormat = "@"
ws.Range("A1").Value = "ファイル名"
r = 2
For Each item In folder.Files
If r > ws.Rows.Count Then Err.Raise 6, , "行数の上限です"
ws.Cells(r, 1).Value = item.Name
r = r + 1
Next item
MsgBox (r - 2) & "件を出力しました"
Exit Sub
Failed:
MsgBox "処理を中止しました: " & Err.Description
End Sub図で見る操作の流れ
イメージ図コードに沿った概念図です。実際の画面や実行結果ではありません。
読取り前
C:\Dataの直下にあるファイルが対象
マクロ:一覧を作成
FileSystemObjectのfolder.Filesを列挙し、このブックへ新規シートを追加
出力後
新規シートA1=ファイル名 A2以降=各ファイルの名前 元ファイルは変更なし
隠し・システム属性も含みますが、子フォルダー内は対象外。0件は見出しのみ。順序は保証されず、エラー時は中止します。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
folderPathを既存のフォルダーへ変更します。
- 3
実行するSubの内側にカーソルを置き、F5キーを押します。
- 4
コードを保存したブックへ新規シートを1枚追加して一覧を書きます。0件なら見出しだけです。