Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » ファイル名一覧を作成するExcelマクロ-Dir関数

ファイル名一覧を作成するExcelマクロ-Dir関数

対象:Excel2003, Excel2007, Excel2010

コマンドプロンプトのDIRコマンドを使ってファイル名一覧を作成する方法をご紹介しています。

同じようなことを、Excelマクロでやりたいということも実務では、よくあります。

[スポンサードリンク]

ファイル名一覧を作成するサンプルマクロ

いくつかの方法が考えられますが、ここではFileSystemObjectを使わない、VBA(Visual Basic for Applications)標準のDir関数を使ったマクロをご紹介します。

Sub フォルダを指定してファイル名一覧を作成する()
 Dim dlg As FileDialog
 Dim fol_path As String 'フォルダのフルパス
 Dim f_name As String 'ファイル名
 Dim i As Long 'ファイル名を出力する行番号

 Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
 If dlg.Show = False Then Exit Sub 'キャンセル時 
 fol_path = dlg.SelectedItems(1) 'フォルダのフルパスを格納
 f_name = Dir(fol_path & "\*") 'フォルダ内の一つ目のファイル名を取得
 If f_name = "" Then
  MsgBox fol_path & " にはファイルが存在しません。"
  Exit Sub
 End If

 Worksheets.Add Before:=Sheets(1)
 Range("A1").Value = fol_path
 Range("A2").Value = "のファイル一覧"
 Range("A4").Value = "ファイル名"

 'A5セルから下にファイル名を書き出し
 i = 5
 Do Until f_name = ""
  Cells(i, "A").Value = f_name
  i = i + 1
  '次のファイル名を取得
  f_name = Dir
 Loop

 MsgBox Sheets(1).Name & "にファイル名一覧を作成しました。"
End Sub

上記のマクロを実行すると、フォルダを指定するためのダイアログが表示され、ファイルが存在していれば、ブックの先頭にシートを挿入して、A5セルから下に向かってファイル名一覧が作成されます。

サンプルマクロの解説

フォルダを指定するモードでFileDialogを表示して、
 Set dlg = Application.FileDialog(msoFileDialogFolderPicker)

指定されたフォルダのフルパスを変数に格納します。
 fol_path = dlg.SelectedItems(1)

Dir関数を使って、指定されたフォルダ内の一つ目のファイル名を取得して、変数・f_nameに格納します。
 f_name = Dir(fol_path & "\*")

Do Until ~ Loop文で、Dir関数が値を返さなくなるまでループをまわし、A5セルから下にファイル名を書きだしていきます。
 i = 5
 Do Until f_name = ""
  Cells(i, "A").Value = f_name
  i = i + 1
  f_name = Dir
 Loop

Dir関数は、引数を指定せずに呼ばれるたときに、直前に指定されたのと同じ引数で、既にみつかっているファイルを除外したファイル名を返す、という仕様を利用して、指定されたフォルダ内のファイル名を順番に取得しているマクロです。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » ファイル名一覧を作成するExcelマクロ-Dir関数

「VBA関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.