エクセルVBAで指定したフォルダ内のファイル名一覧を取得する

ある任意のフォルダの中にあるファイル名をすべて、エクセルファイルに打ち出したいということはないでしょうか。その場合は、ファイル名やフォルダ名を取得するDir関数に、ワイルドカードを使用することで可能になります。取得できるファイル名はエクセルファイル、CSVファイルでも可能です。ここでは、エクセルVBAで、任意のフォルダ内のファイル名をすべて取得する方法を紹介しています。1つ1つファイル名を入力すると、入力ミスしたり時間もかかります。効率よく作業が楽になります。

 

 

任意のフォルダからすべてのファイル名を取得

Dir関数は、ファイル名やフォルダ名を取得する場合に使用し、ワイルドカードが使えます。Dir関数にワイルドカードを使用して、特定のフォルダ内のすべてのファイル名を取得できます。

Dir関数の構文

Dir ( [PathName] [, Attributes] )

引数 内容
PathName ファイル名を表す文字列式を指定します。 フォルダ名、ドライブ名も含めて指定できます。 引数 PathName に指定した内容が見つからないときは、長さ 0 の文字列 (” “) を返します。 省略可
Attributes 取得するファイルが持つ属性の値の合計を表す数式または定数を指定します。省略すると、標準ファイルの属性になります。省略可

引数 Attributes に指定できる定数

定数 内容
vbNormal 0 標準ファイル
vbReadOnly 1 読み取り専用ファイル
vbHidden 2 隠しファイル
vbSystem 4 システム ファイル
vbVolume 8 ボリュームラベル
vbDirectory 16 フォルダ
vbAlias 64 エイリアス ファイル

 

 

Pathプロパティは指定したブックが含まれるフォルダのパスを返します。

Pathプロパティの構文

expression.Path

PathプロパティとDir関数にワイルドカードを使用して、指定したフォルダ内のすべてのファイル名を取得します。

 

指定したフォルダ内のファイル名をセルに表示

エクセルVBAで、任意のフォルダにあるエクセルのファイル名をすべてセルに表示させます。

ファイル名は、セルA1から下方向にセルに表示されます。

Cドライブの「作業フォルダ」にある、エクセルファイル名をセルに表示させるVBAです。

Sub ファイル名一覧作成()
Dim Fname As String
Dim Cont As Long
Const Path As String = “C:\作業フォルダ\”
Fname = Dir(Path & “*.xlsx”)
Do While Fname <> “”
Cont = Cont + 1
Cells(Cont, 1) = Fname
Fname = Dir()
Loop
End Sub

「作業フォルダ」にファイルがあったら、そのファイル名がすべてセルA1から表示されます。

 

 

任意のフォルダ内のファイル名を指定したセルに表示

任意のフォルダ内のエクセルファイル名を、指定したセルに表示させるVBAです。

Sub ファイル名一覧作成A()
Dim FileName As String

Dim i As Long
Const Path As String = “C:\作業フォルダ\”
FileName = Dir(Path & “*.xlsx”)
If FileName = “” Then
MsgBox “フォルダがありません。”
Exit Sub
End If

i = 7

FileName = Dir(Path & “*.xlsx”)
Do Until FileName = “”
Cells(i, 1).Value = FileName
FileName = Dir()
i = i + 1
Loop

MsgBox “ファイル名一覧を作成しました。”

End Sub

指定したフォルダがなかった場合は「フォルダがありません。」のメッセージが出ます。

ファイル名一覧が完了したら「ファイル名一覧を作成しました。」のメッセージが出ます。

さまざまなファイルの種類のファイル名を取得

PathプロパティとDir関数にワイルドカードを使用すると、エクセルファイルだけで、なくさまざまなファイルの名前が取得できます。セルに表示させたいファイル名が1つ2つならいいですが、数が多いと大変です。ファイル名をセルに入力させることができると、さらに別の作業と組み合わせて仕事を効率化させることができます。ボタンを作成するとワンクリックでVBAを実行できるので、同じような作業を定期的に行うならボタンを作成したほうがいいです。

こちらの記事もご覧ください。⇒エクセルVBAで指定したフォルダを開く!