この記事では、同じフォルダ内のファイル名を取得(一括)し一覧にする方法【指定フォルダ内の全ての名前】方法について解説していきます。
VBAマクロでは、コードの一つ一つが何をしているのか?を理解していくのがおすすめですね。
目次
VBAでフォルダ内のすべてのファイル名を取得・一覧にする方法【指定フォルダ】
それでは以下でVBAでフォルダ内のすべてのファイル名を取得・一覧にする方法【指定フォルダ】について解説していきます。
Alt+F11にてVBE画面を開いた後、以下のサンプルコードを貼付しましょう。
この時、「folderPath = “C:\YourFolderPath\”」をあなたが指定したいフォルダ名に変更してくださいませ。ここで、ファイル名を一括取得したいディレクトリを指定しているわけです。
例えば、C直下のsampleフォルダのすべてのファイル名を表示させたいのであれば、folderPath = “C://sample//”とします。
なお、出力先のシート名は以下ではSheet1としていますが、ここも必要があれば修正しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Sub ListAllFilesInFolder() Dim folderPath As String Dim file As String Dim ws As Worksheet Dim i As Long ' 使用するワークシートを設定 Set ws = ThisWorkbook.Worksheets("Sheet1") ' フォルダパスを指定 folderPath = "C:\YourFolderPath\" If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\" End If ' 初期ファイル名を取得 file = Dir(folderPath & "*.*") ' ヘッダーの作成 ws.Cells(1, 1).Value = "File Name" ' ファイル名のリスト化 i = 2 Do While Len(file) > 0 ws.Cells(i, 1).Value = file file = Dir i = i + 1 Loop End Sub |
Alt+F8にて該当のマクロを実行させます。これで指定フォルダのすべてのファイルの取得が完了です!
実際のC直下のサンプルフォルダの中身と一致していることが確認できました(^^)/
フォルダ名も追加したい場合
なお、上のコードでは、指定ディレクトリ内の「ファイル名(.csv、.xlsx、.txtなど)」は取得できますが、フォルダ名などは得られません。
以下のコードでは、フォルダも含まれますので試してみてくださいませ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Sub ListAllFilesAndFoldersInFolder() Dim folderPath As String Dim item As String Dim ws As Worksheet Dim i As Long Dim isFolder As Boolean ' 使用するワークシートを設定 Set ws = ThisWorkbook.Worksheets("Sheet1") ' フォルダパスを指定 folderPath = "C:\YourFolderPath\" If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\" End If ' 初期ファイル名を取得 item = Dir(folderPath, vbDirectory) ' ヘッダーの作成 ws.Cells(1, 1).Value = "Item Name" ws.Cells(1, 2).Value = "Type" ' ファイルおよびフォルダ名のリスト化 i = 2 Do While Len(item) > 0 isFolder = (GetAttr(folderPath & item) And vbDirectory) = vbDirectory If item <> "." And item <> ".." Then ws.Cells(i, 1).Value = item If isFolder Then ws.Cells(i, 2).Value = "Folder" Else ws.Cells(i, 2).Value = "File" End If i = i + 1 End If item = Dir(, vbDirectory) Loop End Sub |
以下が指定ディレクトリにおけるファイル名・フォルダ名すべてを一括で表示させ、その種類も分類できた結果です(^^)/
まとめ 指定フォルダ内のファイル名やフォルダ名をすべて取得・表示(一括)し一覧にする方法【VBA】
ここでは、VBAマクロにて同じフォルダ内のファイル名を取得(一括)し一覧にする方法【指定フォルダ内の全ての名前】を解説しました。
マクロを扱えるとますますエクセルが好きになると思います!
コード作成に慣れ、日々の生活をもっと快適にしていきましょう。