Excelで、指定したフォルダ内にあるファイル名を一括で取得するVBA。cmd不要。ファイルサイズや更新日も。

Excelで、指定したフォルダ内にあるファイル名を一括で取得するVBA。

コマンドプロンプト不要。Excelのシートに取り込み。

目次

すべてのファイル名を一括で取得 – VBAコード 

指定フォルダ内のファイル名をすべて取得し、アクティブシートのA列に出力します。

Sub GetFileNames()
    Dim folderPath As String
    Dim fileName As String
    Dim row As Integer
    
    ' フォルダ選択ダイアログを開く
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub ' キャンセルされたら終了
        folderPath = .SelectedItems(1) & "\"
    End With
    
    ' アクティブシートのA列にファイル名を出力
    row = 1
    fileName = Dir(folderPath) ' フォルダ内のすべてのファイルを対象
    
    Do While fileName <> ""
        Cells(row, 1).Value = fileName
        row = row + 1
        fileName = Dir() ' 次のファイル取得
    Loop
    
    MsgBox "ファイル一覧の取得が完了しました。", vbInformation
End Sub

VBAの流れ

  1. フォルダ選択ダイアログを表示し、取得対象のフォルダを選択。
  2. Dir関数を使用して、フォルダ内の最初のファイル名を取得。
  3. Do While ループで、すべてのファイル名をA列に出力。
  4. MsgBox で処理完了を通知。

VBA実行結果

指定したフォルダ内のファイル名が、A列にすべて出力される。

VBAでファイル名一括取得

注意

A列にデータがある場合は、上書きされます。
必要に応じてカスタムして使用してください。

指定した種類のファイルのみ取得 – VBAコード 

拡張子を指定して、特定の種類のファイル名のみ取得します。

例:画像ファイル(.jpg)のみ、音楽ファイル(.mp3)のみ、Excelファイル(.xlsx)のみ等。

サンプルコード – 画像ファイル(.jpg)のみ

Sub GetFileNames_fileType()
    Dim folderPath As String
    Dim fileName As String
    Dim row As Integer
    
    ' フォルダ選択ダイアログを開く
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub ' キャンセルされたら終了
        folderPath = .SelectedItems(1) & "\"
    End With
    
    ' アクティブシートのA列にファイル名を出力
    row = 1
    
    fileName = Dir(folderPath & "*.jpg") ' 例: jpgファイルのみ取得
    
    Do While fileName <> ""
        Cells(row, 1).Value = fileName
        row = row + 1
        fileName = Dir() ' 次のファイル取得
    Loop
    
    MsgBox "ファイル一覧の取得が完了しました。", vbInformation
End Sub

VBA実行結果

指定したフォルダ内の、画像ファイル(.jpg)のみ出力される。

出力ファイル名
03.fire.jpg
04.jet.jpg
1.Stock.jpg
57113190.8.jpg

追加したコード

15行目でファイル名の取得時に拡張子を指定。

15行目 「fileName = Dir(folderPath & "*.jpg") ' 例: jpgファイルのみ取得

その他のカスタム例

fileName = Dir(folderPath & "*.mp3") ' 例: mp3ファイルのみ取得
fileName = Dir(folderPath & "*.xlsx") ' 例: Excelファイルのみ取得
fileName = Dir(folderPath & "*.php") ' 例: phpファイルのみ取得

ファイルサイズや更新日時も取得する – VBAコード 

ファイル名に加え、ファイルサイズと更新日時を取得するカスタム例です。

出力:
A列:ファイル名、B列:更新日時、C列:ファイルサイズ(KB)

サイズと更新日時も取得 – サンプルVBA

Sub GetFileNames_custom()
    Dim folderPath As String
    Dim fileName As String
    Dim row As Integer
    
    ' フォルダ選択ダイアログを開く
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub ' キャンセルされたら終了
        folderPath = .SelectedItems(1) & "\"
    End With
    
    ' アクティブシートのA列にファイル名を出力
    row = 1
    
    fileName = Dir(folderPath) ' フォルダ内のすべてのファイルを対象
    
    Do While fileName <> ""
        Cells(row, 1).Value = fileName ' ファイル名
        Cells(row, 2).Value = FileDateTime(folderPath & fileName) ' 更新日時
        'Cells(row, 3).Value = FileLen(folderPath & fileName) ' ファイルサイズ
        Cells(row, 3).Value = Round(FileLen(folderPath & fileName) / 1024, 2) & " KB"

        row = row + 1
        fileName = Dir() ' 次のファイル取得
    Loop
    
    MsgBox "ファイル一覧の取得が完了しました。", vbInformation
End Sub

VBA実行結果

指定したフォルダ内の、ファイル名・更新日時・ファイルサイズが取得される。
(注意:A-C列にデータがあると上書きされます。)

VBAの使用方法

  1. ExcelでVBAエディター(Alt + F11)を開き、標準モジュールにコードを貼り付け。
  2. Excelに戻り、「Alt + F8」を押してマクロの一覧を表示。
  3. 追加したSub名が表示されるので、選択して「実行」。

記事について

当サイトは、主に自分用の備忘録として情報をまとめています。個別の質問にはお答えできません。
紹介するコードや設定をご参考の際は、ご自身の責任においてご利用ください。編集や実行によるいかなる損害・不具合についても、当サイトは責任を負いかねます。
必ず事前にバックアップを取り、安全に作業を行ってください。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次