あるフォルダー内のファイルを一覧でシートに出力する方法
Q.マクロを使って、あるフォルダに集められた週報のファイルを一覧にして作業をすることになりました。フォルダのファイルを一覧して表示するようなVBAのコマンドはあるのでしょうか。
A.Excelマクロの関数「Dir」を使用すれば、比較的簡単にファイルの一覧を取得できます。
週報が格納されているフォルダを c:\週報 とした場合の、まずはコードを先に示します。
Excelのマクロ付きブックを新規で作成し、「開発」リボンからVisual Basic Editorを起動して下さい。
ファイルの一覧の出力対象とするシートをVisual Basic Editorの左ペインから選択し、コードエディタから下記を記述します。
Sub ファイル一覧
Dim row as Integer
Dim fileName as string
fileName = Dir(“c:\週報\*.*”) ‘★(1)
row=1
Do Until fileName = “”
Cells(row,1).Value = fileName ‘★(2)
fileName = Dir()
row = row + 1
Loop
End Sub
これを実行すると(Excel画面に戻って、「開発」リボンの「マクロを表示」から上記関数を選択し実行する)、選択しているシート上のA1から下にファイルの一覧が表示されたと思います。
まず、★(1)の部分で、Dir関数の引数に、対象のフォルダを指定します。このとき、「*.*」を指定することで存在する全てのファイルを指定しています。
※このような指定の方法を「ワイルド・カード」と言います。*は文字は任意の文字の任意の回数の繰返しを示します。
従って、「*.*」は、拡張子(Excelならxlsx)付きのファイル名なら何でも、ということですね。
その後、★(2)では、Dir関数の引数をなしにすることで、前回Dir関数を行った対象のフォルダを続けて検索する、と言う意味になります。
(★(2)で★(1)と同じ対象フォルダを指定すると、都度新たに検索をはじめからやり直すことになるので、ずっと1個目のファイルが表示され続け止まらなくなるので注意してください!)
そして対象のフォルダからファイルが見つからなくなると、Dir関数が空文字を返すので、はじめのDoループを脱出して、処理終了となります。
こちらの処理もいろんな業務効率化のマクロで使えそうなので、是非マスターして下さい。