11/28/2018

Excel。マクロ038。フォルダー内のファイル名の一覧を作りたい【FileName】

Excel。マクロ038。フォルダー内のファイル名の一覧を作りたい

<Excel VBA>

今回は、フォルダー内にあるファイルがたくさんあって、
把握したいので、わかりやすいように、
Excelのシートにファイル名の一覧表を作りたいと考えたとします。

フォルダー内のファイル名をひとつずつ、コピーして、
Excelのセルに貼り付けていく作業は、単純で、しかも、面倒。

このような場合でも、Excel VBAをつかってマクロを作成すれば、
とても簡単に、フォルダー内の管理。
ファイル名の一覧表化をすることができるのです。

Excel VBAが好まれているのは、高速処理だけではなく、
このようなファイルやフォルダーなども
操作することができる点なんでしょうね。

しかも、それほど、プログラム構文も難しくなく作成することができますので、
一般の事務職に従事している方でも是非知っておくと便利かもしれません。

では、作っていくことにしましょう。

フォルダー内には、複数のファイルが存在しています。


横須賀店・横浜店・川崎店。それぞれのExcelファイルが存在しています。

そして、もう一つ確認しておく必要があります。
それは、このファイルがどこにあるのか?
つまり、パスを確認しておく必要があります。
今回は、
C:\Users\Desktop\店舗データ
という場所にあるとします。

Excel VBAの構文を作っていきましょう。

Sub ファイル一覧表作成()
    Dim i As Long
    Dim file_name As String
   
    file_name = Dir("C:\Users\Desktop\店舗データ\*.xls?")
   
    Do While file_name <> ""
        i = i + 1
        Cells(i, 1) = file_name
        file_name = Dir()
    Loop
End Sub

たったこれだけで、処理することができますので、
説明の前に、実行して確認してみましょう。

このように、フォルダー内のファイル名一覧表を作ることができましたね。

それでは、Excel VBAのプログラム構文を確認しておきましょう。

Dim i As Long
Dim file_name As String
変数を設定しています。iは行数のためのカウントさせる変数です。
もう一つのfile_nameは、ファイル名を格納する変数です。

file_name = Dir("C:\Users\Desktop\店舗データ\*.xls?")

Dir関数を使うと、指定したパスの中から、*.xls?のファイルを検索して、
最初に検索できた*.xls?のファイル名を格納することができます。

「*.xls?」ワイルドカードを使って検索させていますが、
sのあとの?は、一文字のワイルドカードです。

これは、拡張子がxlsxもあれば、xlsmもありますので、
そのための一文字のワイルドカードをつかって、検索させています。

なお、このDir関数。
とても便利な関数で、「一度検索したファイルは自動的に除外」してくれます。

そして、2度目のDir関数は引数を省略すると、
フォルダー内のファイルを検索することができます。

なお、すべての検索が終了すると、空欄を返す処理を行います。

Do While file_name <> ""
    i = i + 1
    Cells(i, 1) = file_name
    file_name = Dir()
Loop

Do While file_name <> ""
Dir関数は、検索が終了すると、
空欄(“”)を返してくるので、空欄まで繰り返させます。

i = i + 1
Cells(i, 1) = file_name
検索したファイル名を、セルに格納させます。

file_name = Dir()
他のファイルを検索します。

このように、比較的簡単な構文で、
フォルダー内のファイル名の一覧表を作ることができます。