【エクセルVBA】フォルダ内のファイル名を一括取得
当ページのリンクには広告が含まれています。
指定したフォルダ内 にある ファイルすべて の「名前」と「拡張子」を取得し、セルに貼付けるテクニックの紹介です。
「ファイル整理」や「文書管理」を行う際に使えます。
VBAを使用することで 効率良く実施することが可能です。
動画を見ればイメージができるかと思います
クリックしてジャンプ
イメージ動画(音声はありません)
VBAコード
FileSystemObject
を使用して、ファイルシステムにアクセスします。FileDialog
オブジェクトを使用してフォルダ選択ダイアログを表示し、ユーザーの選択を取得します。- 選択されたフォルダ内の各ファイルに対して、ファイル名を
.
で分割し、名前と拡張子を分けます。 - 分割したファイル名をB列に、拡張子をC列にそれぞれ記入します。
AutoFit
メソッドを使用して、B列とC列の幅を内容に合わせて自動調整します。
以下のコードを実行する際の注意点
FileSystemObject
を使うためには「参照設定」の追加が必要です
Sub ListFilesAndExtensionsToWorksheet()
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show = -1 Then ' ユーザーがフォルダを選択した場合
Dim folderPath As String
folderPath = fd.SelectedItems(1) ' 選択されたフォルダのパスを取得
Dim folder As folder
Set folder = fso.GetFolder(folderPath)
Dim file As file
Dim i As Integer
i = 3 ' B3セルから開始
Dim ws As Worksheet
Set ws = ActiveSheet ' 現在アクティブなワークシートを使用
' B3セルから下とC3セルから下をクリアする
ws.Range("B3:B" & ws.Rows.count).ClearContents
ws.Range("C3:C" & ws.Rows.count).ClearContents
ws.Range("D3:D" & ws.Rows.count).ClearContents
Dim fileName As String
Dim fileParts() As String
For Each file In folder.Files
fileName = file.Name
fileParts = Split(fileName, ".") ' ファイル名を「.」で分割
' 名前と拡張子を別々の列に設定
If UBound(fileParts) > 0 Then
ws.Cells(i, 2).Value = Join(ArrayLeft(fileParts, UBound(fileParts)), ".") ' B列に名前
ws.Cells(i, 3).Value = "." & fileParts(UBound(fileParts)) ' C列に拡張子
Else
ws.Cells(i, 2).Value = fileName ' 拡張子がない場合は名前のみ
End If
i = i + 1
Next file
' B列とC列の幅を自動調整
ws.Columns("B:B").AutoFit
ws.Columns("C:C").AutoFit
Else
MsgBox "フォルダが選択されませんでした。"
End If
End Sub
' 配列の左側の要素を指定された数だけ取得する関数
Function ArrayLeft(arr() As String, count As Integer) As String()
Dim result() As String
ReDim result(count - 1)
Dim i As Integer
For i = 0 To count - 1
result(i) = arr(i)
Next i
ArrayLeft = result
End Function
機能の概要
- ユーザーにフォルダ選択ダイアログを表示し、任意のフォルダを選択させます。
- 選択したフォルダ内のすべてのファイルの名前と拡張子をExcelのワークシートにリストアップします。
- ファイル名はB列に、拡張子はC列に表示されます。
- リストを更新するたびに、既存のリストはクリアされ、最新の情報が表示されます。
使用される主なVBA機能
- FileSystemObject: ファイルやフォルダの操作を可能にするオブジェクト。
- FileDialog: ファイルやフォルダを選択するためのダイアログボックスを提供するオブジェクト。
- Split関数: 文字列を分割するための関数。
- AutoFitメソッド: セルの内容に基づいて列幅を自動調整するメソッド。
- ArrayLeft関数: 独自に作成された関数で、配列の最初から指定された数の要素を新しい配列として取得します。