こんにちは!今回は、Excel VBAを使って特定フォルダ内のファイル名を自動で取得する方法をご紹介します。ファイル名のリスト化作業は手動で行うと時間がかかりますが、この方法を使えば、数秒で大量のファイル名を抽出できます。「フォルダ内のファイルを一括で管理したい」や、「ファイル名を使ったデータ整理や処理を効率化したい」といった課題を抱える方に役立つ内容です。
使用するExcelフォーマット
今回のExcelシートでは、B列に番号、C列にファイル名を出力する形式を採用しています。VBA実行後、4行目以降にファイル名が抽出されます。
抽出対象フォルダ
抽出対象のフォルダは、Cドライブ直下の「temp」フォルダに格納された6つのファイル(Excelファイルとテキストファイル)です。動作としては、フォルダ内の全ファイル名を取得します。
実行結果
VBAを実行した結果、下記のようにC列にファイル名が抽出されました。
コード★★★(コピーはここ)★★★
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub GetFileNames() Dim FileName As String Dim RowNum As Long Const FolderPath As String = "解説:\temp\" ' 対象フォルダパス RowNum = 4 ' 出力開始位置 FileName = Dir(FolderPath & "*") ' ファイル名取得 Do While FileName <> "" Cells(RowNum, 3).Value = FileName ' C列にファイル名を出力 RowNum = RowNum + 1 FileName = Dir() ' 次のファイル名取得 Loop End Sub |
解説
1. 変数の宣言
1 2 |
Dim FileName As String Dim RowNum As Long |
FileName
:取得したファイル名を格納する変数。RowNum
:ファイル名を貼り付ける行番号を管理します。
2. フォルダパスと出力開始位置の指定
1 2 |
Const FolderPath As String = "C:\temp\" RowNum = 4 |
- FolderPath には、ファイル名を抽出する対象フォルダのパスを指定。
- 出力は 4行目 から開始。
3. ファイル名取得と出力
1 2 3 4 5 6 |
FileName = Dir(FolderPath & "*") Do While FileName <> "" Cells(RowNum, 3).Value = FileName RowNum = RowNum + 1 FileName = Dir() Loop |
Dir
関数を使用して、指定フォルダ内の全ファイル名を取得。- ループ内でC列に順次ファイル名を貼り付け、行番号を更新。
使用している技術
- Dir関数:フォルダ内のファイル名を取得する関数。
- Do While Loop:条件に基づいてファイル名を全て取得するループ処理。
まとめ
今回のVBAコードを使えば、フォルダ内のファイル名を自動で抽出できます。この機能単体ではシンプルですが、次のステップ(例えばファイルの操作やデータ処理)へ繋げることが重要です。また、実際の運用時には、ファイルが見つからない場合やエラー処理の追加も検討しましょう。
コメント