VBAのDir関数を使って、指定したフォルダのファイル名一覧を作成するExcelマクロをご紹介しました。
FileSystemObjectを使った、ファイル名一覧作成マクロもご紹介しておきましょう。
ファイル名一覧を作成するサンプルマクロ
FileSystemObjectを利用する場合は以下のようなマクロです。
Dim dlg As FileDialog
Dim fd_path As String
Dim fso As Object 'Scripting.FileSystemObject
Dim fl As Object 'Scripting.File
Dim i As Long
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
If dlg.Show = False Then Exit Sub
fd_path = dlg.SelectedItems(1)
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.GetFolder(fd_path).Files.Count < 1 Then
MsgBox fd_path & " にはファイルが存在しません。"
Set fso = Nothing
Exit Sub
End If
Worksheets.Add Before:=Sheets(1)
Range("A1").Value = fd_path
Range("A2").Value = "のファイル一覧"
Range("A4").Value = "ファイル名"
i = 5
For Each fl In fso.GetFolder(fd_path).Files
Cells(i, "A").Value = fl.Name
i = i + 1
Next fl
Set fso = Nothing
MsgBox Sheets(1).Name & "にファイル名一覧を作成しました。"End Sub
上記のマクロを実行すると、フォルダを選択するダイアログが表示され、そのフォルダに含まれるファイル名一覧が、新規ワークシートのA5セルから下に作成されます。
サンプルマクロの解説
フォルダを指定するダイアログを表示する、
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
If dlg.Show = False Then Exit Sub
fd_path = dlg.SelectedItems(1)
の部分は、Dir関数を使う場合と同じです。
次からが、ロジックとしてはDir関数版と同じですが、コードは異なります。
まずFileSystemObjectをCreateObjectして、
Set fso = CreateObject("Scripting.FileSystemObject")
指定されたフォルダのファイルが1つもないときには、メッセージを表示してマクロを終了します。
If fso.GetFolder(fd_path).Files.Count < 1 Then
MsgBox fd_path & " にはファイルが存在しません。"
Set fso = Nothing
Exit Sub
FileSystemObjectオブジェクトの、GetFolderメソッドでFolderオブジェクトを取得して、
FolderオブジェクトのFilesプロパティで、Filesコレクションオブジェクトを取得して、
FilesコレクションオブジェクトのCountプロパティでFileの数を調べています。
ファイル名一覧を作成するシートをブックの先頭に挿入して、
Worksheets.Add Before:=Sheets(1)
見出しなどを作成して、
Range("A1").Value = fd_path
Range("A2").Value = "のファイル一覧"
Range("A4").Value = "ファイル名"
A5セルから下にファイル名を書き出していきます。
i = 5
For Each fl In fso.GetFolder(fd_path).Files
Cells(i, "A").Value = fl.Name
i = i + 1
Dir関数を使うマクロではDo~Loop文を使っていましたが、FileSystemObjectを使う今回のマクロではFor Each~Next文です。
指定されたフォルダ内の全ファイルに対してループを回して、
For Each fl In fso.GetFolder(fd_path).Files
ファイル名を書き出しています。
Cells(i, "A").Value = fl.Name
最終更新日時:2018-12-13 09:30
Home » FSO・FileSystemObjectの使い方 » ファイル名一覧を作成するExcelマクロ-File.Nameプロパティ