やりたいこと
指定したフォルダにあるすべてのファイルの名称を取得して、リストで表示します。
フォルダのパスは、ダイアログボックスのポップアップ画面でフォルダを選択することで取得します。
VBAの基本的な操作については、以下の記事を参考にしてください。
VBAでHello Worldを表示する
前提条件
- フォルダの中にフォルダが入っている場合は、フォルダ名やフォルダの中身のファイル名は取得しません。
- フォルダにあるすべてのファイル形式のファイルの名称を取得します。.xlsxだけではなく、.jpgなども取得します。
ソースコード
Sub GetFileName()
'FolderPath変数を宣言する
Dim FolderPath As String
'フォルダ選択のダイアログボックスのポップアップ画面を表示する
'選択したフォルダのパスを取得、変数FolderPathに代入する
If (Application.FileDialog(msoFileDialogFolderPicker).Show = True) Then
FolderPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
End If
'カウントアップ用の変数FileCountを宣言し、1を代入する
Dim FileCount As Long
FileCount = 1
'ファイル名を格納する変数FileNameを宣言する
'Dir関数を使って、FolderPathに入っているファイル名を取得し、FileNameList変数に格納する
'Dir関数は引数に指定したファイルが存在したとき、そのファイル名を返す関数
Dim FileName As String
FileName = Dir(FolderPath)
'Do loopは、条件式を判定し、真の間だけステートメント(命令文)を繰り返し実行するステートメント
'FileNameが""(ブランク)になるまで実行し続ける
Do While FileName <> ""
Worksheets("Sheet1").Cells(FileCount, 1).Value = FileName 'FileNameListを書き込むセルの位置を指定
FileCount = FileCount + 1
FileName = Dir() 'Dir関数は引数を省略すると前回の引数を引き継ぐ。Dir関数は一度戻り値として返したファイルは除外する。
Loop
End Sub