Excelのマクロは、単にワークシートの中の操作を自動化できるだけではない。ファイルを開いたり保存したりと、ファイルの操作も可能だ。その機能を応用すると、「指定したフォルダの中にあるファイル名の一覧を作成する」といったことまで、Excelだけで実現できる(図1)。早速、そのマクロを作ってみよう。

図1 フォルダ内のファイル名一覧を作るマクロを作成してみよう。フォルダのパスをB1セルに入力して(1)、マクロを実行すると(2)、A4セルから順にファイル名が表示される(3)
図1 フォルダ内のファイル名一覧を作るマクロを作成してみよう。フォルダのパスをB1セルに入力して(1)、マクロを実行すると(2)、A4セルから順にファイル名が表示される(3)
[画像のクリックで拡大表示]

ファイル名はDirで調査、繰り返し構文とともに活用

 実際のコードが図2。一見難しそうだが、1つひとつの処理を順に追っていくと、何をしているかがわかる。このマクロのポイントは、3つある。 

図2 指定したフォルダ内にあるファイル名一覧を作成するマクロのコード。一見複雑そうに見えるが、個々のコードの役割を順に追っていけば、理解しやすい
図2 指定したフォルダ内にあるファイル名一覧を作成するマクロのコード。一見複雑そうに見えるが、個々のコードの役割を順に追っていけば、理解しやすい
[画像のクリックで拡大表示]

 まずは、ファイル名を調べるコード「Dir」の使い方だ。これは、カッコの中の引数にファイルのパスを指定すると、ファイルが存在するときはファイル名が、存在しないときは空欄が計算結果になるものだ[注]。

 引数のパスには、すべての文字を表す「*」といった記号(ワイルドカード)が使える。フォルダのパスに「¥*.*」を結合すると、「フォルダ内にあるすべてのファイル」という意味になる。これを引数に指定したとき、Dirは図3のような振る舞いをする。Dirを繰り返し呼び出すことで、すべてのファイル名を調べられる。

 図2のコードではDirを、最初の1回はパスを指定して呼び出し、2回目以降は引数を省略し、「Do While~Loop」という構文を使って、何度も繰り返し呼び出している。

図3 「Dir」は、パスで指定したファイルの名前が結果になるコード。すべての文字を表す「*」を使い、フォルダのパスに「¥*.*」を結合した文字列を引数に指定すると、何度もDirを呼び出すことで、ファイル名を次々と取得できる。全部見つけた後は、Dirの結果は空欄(
図3 「Dir」は、パスで指定したファイルの名前が結果になるコード。すべての文字を表す「*」を使い、フォルダのパスに「¥*.*」を結合した文字列を引数に指定すると、何度もDirを呼び出すことで、ファイル名を次々と取得できる。全部見つけた後は、Dirの結果は空欄("")になる
[画像のクリックで拡大表示]

[注]Dirの引数は、パスを指定しなければならないが、計算結果はファイル名と拡張子だけになる