← コード一覧へ戻る
実務フォルダー

フォルダ内のファイル一覧を取得する(Dir関数を使う場合)

Dir関数で指定フォルダー直下のファイル名を、新規シートのA2以降へ一覧出力します。

実行前に確認

  • Windows専用の例です。C:\Dataは例なので、自分で用意した練習用フォルダーの絶対パスに変更してください。
  • サブフォルダーやその中身は列挙しません。順序は保証しません。Dirの繰り返し中に別のDir検索を始めると列挙がリセットされるので追加しないでください。

1サンプルコード

Sub Example4015()
    On Error GoTo Failed
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim folderPath As String, fileName As String, r As Long, ws As Worksheet
    folderPath = "C:\Data\"
    If Not fso.FolderExists(folderPath) Then Err.Raise 76, , "フォルダーがありません"
    Set ws = ThisWorkbook.Worksheets.Add
    ws.Range("A1").Value = "ファイル名"
    ws.Columns("A").NumberFormat = "@"
    r = 2
    fileName = Dir$(folderPath & "*", vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive)
    Do While Len(fileName) > 0
        If r > ws.Rows.Count Then Err.Raise 6, , "行数の上限です"
        ws.Cells(r, 1).Value = fileName
        r = r + 1
        fileName = Dir$()
    Loop
    MsgBox (r - 2) & "件を出力しました"
    Exit Sub
Failed:
    MsgBox "処理を中止しました: " & Err.Description
End Sub

図で見る操作の流れ

イメージ図

コードに沿った概念図です。実際の画面や実行結果ではありません。

  1. 読取り前

    C:\Data\直下にあるファイルが対象

  2. マクロ:一覧を作成

    このブックへ新規シートを追加し、Dirで直下のファイルを列挙

  3. 出力後

    新規シートA1=ファイル名 A2以降=見つかったファイル名 元ファイルは変更なし

サブフォルダー内は対象外。0件なら見出しだけ。順序は保証されず、フォルダーなしや行数上限などのエラーでは中止します。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    folderPathを既存フォルダーへ変更し、末尾の\は残します。

  3. 3

    実行するSubの内側にカーソルを置き、F5キーを押します。

  4. 4

    実行すると新規シートを追加し、A1へ見出し、A2以降へファイル名を出力します。

使っている機能の公式ドキュメント(Microsoft Learn)