Excel VBAでフォルダ内のファイル名・フルパスを取得する方法|Dir関数

 

ExcelVBA 指定したフォルダ内のファイル名やフルパスを取得し、リストアップや特定の処理を行うために利用します。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

Excel VBAでフォルダ内のファイル名・フルパスを取得する用途とは?

 

以下のようなシーンで利用されます。

 

1.フォルダ内のファイル一覧をExcelシートに出力。

2.特定の拡張子のファイルを探して処理する。

3.ファイル名を取得して他のシステムやレポートで使用する。

Dir関数を使ってファイル名を取得するポイント

 

使い方

Dir 関数を使って、フォルダ内のファイル名を1つずつ取得できます。

ポイント

1.ワイルドカードの活用
* や ? を使用して特定のパターンのファイルを取得できます(例: *.xlsx)

2.フォルダの指定
フォルダパスが正しく設定されていないとエラーになります。

3.ファイルとフォルダの区別
Dir 関数はファイルだけでなくフォルダも返すため、判別が必要です。

 

【サンプルコード】フォルダ内のファイルを一括取得するVBAマクロ

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

指定したフォルダ内のすべてのファイル名を取得して、シートに一覧を作成する

  1. Option Explicit
  2. Sub GetFileNames()
  3.     Dim folderPath As String
  4.     Dim fileName As String
  5.     Dim row As Long
  6.     
  7.     ' フォルダパスを指定
  8.     folderPath = "C:\Users\User\Desktop\sourceFile"
  9.     
  10.     ' 最後がバックスラッシュで終わっていない場合は追加
  11.     If Right(folderPath, 1) <> "\" Then
  12.         folderPath = folderPath & "\"
  13.     End If
  14.     
  15.     ' 初期設定
  16.     fileName = Dir(folderPath) ' 最初のファイル名を取得
  17.     row = 1 ' 出力先の行番号
  18.     
  19.     ' シートに結果を出力
  20.     Do While fileName <> ""
  21.         Cells(row, 1).Value = fileName ' ファイル名
  22.         Cells(row, 2).Value = folderPath & fileName ' フルパス
  23.         row = row + 1
  24.         fileName = Dir ' 次のファイル名を取得
  25.     Loop
  26.     
  27.     MsgBox "ファイル名を取得しました!", vbInformation
  28. End Sub

 

1. Dir 関数を使って、フォルダ内のファイル名を1つずつ取得します。

2. 取得したファイル名をセルに出力します(列Aにファイル名、列Bにフルパス)

3. 次のファイルを取得するために Dir を再度呼び出します。

 

特定の拡張子(例: .xlsx)のファイルだけを取得する

  1. Option Explicit
  2. Sub GetSpecificFiles()
  3.     Dim folderPath As String
  4.     Dim fileName As String
  5.     Dim row As Long
  6.     
  7.     ' フォルダパスを指定
  8.     folderPath = "C:\Users\User\Desktop\sourceFile"
  9.     
  10.     ' 初期設定
  11.     fileName = Dir(folderPath & "*.xlsx") ' .xlsxファイルのみ取得
  12.     row = 1 ' 出力先の行番号
  13.     
  14.     ' シートに結果を出力
  15.     Do While fileName <> ""
  16.         Cells(row, 1).Value = fileName ' ファイル名
  17.         row = row + 1
  18.         fileName = Dir ' 次のファイル名を取得
  19.     Loop
  20.     
  21.     MsgBox "Excelファイルのみを取得しました!", vbInformation
  22. End Sub

 

フォルダが存在しない場合にエラーを通知するコード

  1. If Dir(folderPath, vbDirectory) = "" Then
  2.     MsgBox "指定したフォルダが存在しません: " & folderPath, vbExclamation
  3.     Exit Sub
  4. End If

 

ネットワークドライブを使用する場合、アクセス権や接続状況に注意が必要です。空のフォルダの場合、Dir は空文字列 ("") を返すためループは実行されません。フォルダが存在しない場合のエラー処理を追加するとより堅牢になります。

 

記憶定着問題集

操作方法:1.●●●をクリック(スマホはタップ)で答え表示。2.答えをクリック(スマホはタップ)で●●●表示。1⇔2を繰り返すことで、記憶を定着できます。

1. ●●● 関数を使って、フォルダ内のファイル名を1つずつ取得します。

2. 取得したファイル名をセルに出力します(列Aにファイル名、列Bにフルパス)

3. 次のファイルを取得するために ●●● を再度呼び出します。

 

DIRの関連記事はここをクリックで一覧表示します

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問