マクロ(VBA)
 PR

Excelマクロ(VBA)でファイル名一覧を取得する方法

ねこる
記事内に商品プロモーションを含む場合があります

※プーさんのレターセット by Panasonic GH5+12-60mm

「マクロでファイル名一覧を作りたい」
「ファイル読み込みしたいけど、ファイル名一覧が作れない」
「社員ファイル多すぎて手動でファイル一覧なんか作ってられない」

ファイル名一覧がないと、ファイル読み込みの自動化ができません。また、Excelファイル・txtファイル・CSVファイルの加工をするためにもファイル一覧が必要です。

しかし、ファイル一覧を手動で作るのは時間がかかりますし、入力ミスも考えられます。

そこで、マクロ(VBA)でファイル一覧を作ってしまえば手間が減り、入力ミスもありません。

今回は、マクロ(VBA)では基本となるファイル名一覧を取得する方法を紹介します。

取得したファイル名一覧は、セルに転記するのでその後は自由に使えますよ。

Excelマクロ(VBA)のDir関数でファイル名一覧を取得する

ファイル名一覧を取得するコードはこちらです。

1 Sub getFileNameList()
2    Dim str1 As String, str2 As String
3    
4    '  フォルダを指定
5    str1 = "/Users/nekoru/Library/CloudStorage/Dropbox/0 Inbox/"
6    ' ファイル名取得
7    str2 = Dir(str1)
8    '  ファイル名転記場所の初期値
9    x = 2
10    
11    Do While str2 <> "" 'ファイル名が見つからなくなるまでループ
12        ' ファイル名転記
13        ThisWorkbook.Worksheets("Sheet1").Cells(x, 1) = str2
14        x = x + 1
15        
16        ' 次のファイル名を取得
17        str2 = Dir()
18    Loop
19End Sub

実行前がこちら

実行後がこちら

詳しく解説していきます。

ファイル名一覧を取得したいフォルダを指定

1'  フォルダを指定
2    str1 = "/Users/nekoru/Library/CloudStorage/Dropbox/0 Inbox/"

フォルダを指定する際は、フルパスで指定しましょう。

フルパスで指定すると間違いが起こりにくいです。

上記は、Macの場合のフルパス表記となります。

Windowsの場合は、「”C:¥”excel」などのように表記が違うので気をつけてください。

フルパスがわからないときは、「フォルダを右クリック」→「プロパティ」から探してみましょう。

ファイル名を取得

1' ファイル名取得
2    str2 = Dir(str1)

ファイル名を取得するために、Dir関数を使います。

Dir関数の()内に、フォルダのパスを教えてあげるとファイル名がstr2に返ってくる仕組みです。

ファイル名は、いきなり全部教えてくれるのではなく1個ずつ教えてくれます。

ファイル名を転記するセルの場所

1'  ファイル名転記場所の初期値
2    x = 2

ファイル名をセルに書き出す際の行数です。

1行目は、項目名になってることがあるので、2行目からファイル名を転記するようにしています。

ファイル名一覧を取得するループ

1Do While str2 <> "" 'ファイル名が見つからなくなるまでループ
2    ' 処理
3Loop

str2にファイル名が順番に入ってくるので、str2が空になったらループを終了するようにしています。

str2が空ということは、ファイルが無くなったということです。

ファイル名をセルに書き出す

1' ファイル名転記
2ThisWorkbook.Worksheets("Sheet1").Cells(x, 1) = str2
3x = x + 1

ファイル名をセルに書き出しています。

行方向に書き出していますが、逆もできます。

  • .Cells(1, x) = str2

「x = x + 1」は、セルの場所を次にずらすためのものです。

次のファイル名を取得する

1' 次のファイル名を取得
2str2 = Dir()

Dir関数を使って、次のファイル名を取得しています。

このとき、Dir関数の()内は空欄でOKです。

Excelマクロ(VBA)のDo While~Loopは欠かせない

1Do While str2 <> "" 'ファイル名が見つからなくなるまでループ
2    ' 処理
3Loop

今回は、ファイル名一覧を作るマクロでしたが、Do While~Loop文が必要でした。

何年もマクロ(VBA)を使ってきていますが、Do While~Loopは本当に欠かせません。

For文ではダメなのか?という意見もあると思いますが、条件を設定できるので今回はDo While~Loopとなりました。

回数が決まっているもの・条件が不要なものにはFor文を使います。

今回のループ文では、「ファイル名が見つからなくなるまで」という条件でした。

ファイル名をすべて一気に取得できる場合には、このループ文は不要なのですが、マクロ(VBA)の場合はファイル名を1個ずつしか取り出せないのでこのような形となります。

今後のファイル名一覧を使ったマクロ(VBA)でも、Do While~Loopなどのループ文は必要になってくるので、ぜひ覚えておいてください。

あわせて読みたい
Excelマクロのループ文(for、while)の使い方
Excelマクロのループ文(for、while)の使い方

Excelマクロ(VBA)に繰り返し処理は任せる

ファイル名一覧を作るなどのような、繰り返し処理はマクロ(VBA)に任せてしまいましょう。

繰り返し処理を任せると、

  • 短時間で終わる
  • ミス、ストレスが無くなる
  • 空いた時間は別のことに使える

同じことの繰り返しは、ストレスがともなうもの。

ならば、機械に任せて違う仕事・遊びをしたほうが有意義に時間を過ごせます。

マクロ(VBA)を作る時間がかかると思う方も多いでしょう。

慣れてしまえば時間はかかりませんし、ChatGPTのようなAIに頼ってもいいと思います。

今回のマクロ(VBA)は10分もかからず作成できました。

ファイル数が100個など、大量にあった場合の手入力では10分では済まないですよね。

マクロ(VBA)初心者の方は難しいと感じるかもしれませんが、1個ずつ丁寧に解説していますのでゆっくり進んでいきましょう。

Sponsor link

Excel VBAを勉強するなら「できる大辞典」がおすすめです。

辞書なのでピンポイントで学ぶことができます。

大学時代、2016年版を購入して勉強していましたが相当使いました。

ネットだけでも勉強はできますが、本を読みながらVBAを勉強したい方は購入してください。

amazonで見てみる

ABOUT ME
ねこる
ねこる
管理者
Mac / プログラミング / Excel / マクロ(VBA) / カメラ

調べたり、効率的なことが好きです。

記事URLをコピーしました