Excelマクロ・VBA 指定フォルダのファイル一覧を取得する方法
Excel特有の用事ではありませんが、
特定のフォルダ内のファイル名を列挙したい場合があります。
そのような時に便利なブックとマクロ・VBAを紹介します。
目次
サンプルファイル
使用方法
「実行」シートに「取得」ボタンを押下すると選択ダイアログが表示されるので
ファイル一覧を表示したいフォルダを選択します。
選択ダイアログで「OK」ボタンを押下すると「結果」シートに選択したフォルダと
ファイルの一覧、ファイル数が表示されます。(Excel以外のファイルも含まれます)
そこまで行くことはないと思われますが、ファイル数は1万件までです。
コードサンプルと説明
ファイル一覧の取得だけなら先述の手順だけでよいですが
カスタマイズしたい方やマクロの中身を知りたい方向けに
ソースコード説明は下記のとおりです。
Option Explicit
Sub DirSet()
Dim exeSheet As Worksheet
Set exeSheet = Worksheets("実行")
Dim resultSheet As Worksheet
Set resultSheet = Worksheets("結果")
'初期化:既入力値を削除
resultSheet.Range("A2").ClearContents
resultSheet.Range("A4:A10004").ClearContents
Dim dirPath As String '検索対象フォルダを格納する変数
'フォルダ選択ダイアログを開く
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = 0 Then
'キャンセルされたので終了
Exit Sub
Else
' 指定されたのでフォルダパスを取得
dirPath = .SelectedItems(1) & "\"
resultSheet.Range("A2").Value = dirPath ' フォルダパスを実行シートに記載
End If
End With
Dim i As Integer
i = 4 ' ファイル表示のループカウンタ(4行から開始)
Dim fileName As String
fileName = dir(dirPath & "*.*") ' 1ファイル目を取得
' 全ファイル名を繰り返す
Do While fileName <> ""
resultSheet.Cells(i, 1).Value = fileName ' ファイル名を実行シートに記載
fileName = dir() ' 次のファイル名を取得(無ければ空白)
i = i + 1
'1万件を超えた場合、終了
If i > 10004 Then
Exit Do
End If
Loop
' 実行シートに移動
resultSheet.Activate
resultSheet.Cells(1, 1).Activate
End Sub