Excel。VBA。フォルダ内のファイル名一覧をつくりたい
<Excel VBA>
フォルダ内にあるファイル名の一覧を書き出したいのですが、ファイル名をコピーして抽出するとなると大変。
簡単な作業ですが、ファイル数が多いとなると、とても面倒です。
そこで、Excel VBAでプログラムをつくって対応することにしました。
今回は、デスクトップに練習フォルダを用意して、その中にファイルがある前提とします。
作成したプログラムです。
Sub ファイル名一覧取得()
Dim フォルダパス As String
Dim ファイル名 As String
Dim 行番号 As Long
フォルダパス = Environ("USERPROFILE") & "\Desktop\練習\"
ファイル名 = Dir(フォルダパス & "*.*")
行番号 = 1
Do While ファイル名 <> ""
Cells(行番号, 1).Value = ファイル名
行番号 = 行番号 + 1
ファイル名 = Dir
Loop
End Sub
では、実行してみましょう。
フォルダ内のファイル名一覧をつくることができました。
プログラムの説明をします。
最初は、変数宣言です。
Dim フォルダパス As String
フォルダの場所を入れる「フォルダパス」という変数を用意します。
Dim ファイル名 As String
ファイル名を入れる「ファイル名」という変数を用意します。
Dim 行番号 As Long
Excelの何行目に書き込むのかという「行番号」という変数を用意します。
フォルダパス = Environ("USERPROFILE") & "\Desktop\練習\"
フォルダの場所を指定します。今回は、ユーザーのデスクトップにある「練習」フォルダとしています。
ファイル名 = Dir(フォルダパス & "*.*")
最初のファイル名を取得します。(*.* はすべてのファイルを対象)
行番号 = 1
Excelの1行目から書き始める
ここから繰り返し処理をします。
Do While ファイル名 <> ""
ファイルが見つかる限り、繰り返し処理をします。
Do While <>””~Loop は、なくなるまで繰り返すという意味です
Cells(行番号, 1).Value = ファイル名
ファイル名をExcelのA列に書き込みます。
行番号 = 行番号 + 1
次の行に移動して書き込む必要がありますので、行番号に+1します
ファイル名 = Dir
次のファイル名を取得します。
Loop
繰り返しのLoopです。
このようなプログラム文だけでも、フォルダ内のファイル名一覧をつくることができます。コピペを繰り返すよりも、楽で時短かなと思います。

