access PR

Accessでフォルダ内のファイル名を一覧取得し、Excelへ出力する方法【VBA】

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

【PR】AccessやVBAの基礎をしっかり学びたい方には、
以下の入門書が分かりやすくておすすめです。
今回のような“テーブル構造”や“VBAでの自動化”を理解しやすくなります

 

 

Access を使って実務をしていると、
フォルダ内のファイルを一覧化して

  • Excel

  • Accessテーブル

  • CSV
    などへ出力したい場面はよくあります。

特に、

  • 請求書PDFの一覧

  • 日次データ(CSV)の一覧

  • フォルダ監査

  • 画像ファイルの管理

こういった業務で「フォルダ内ファイル一覧」が大活躍します。

この記事では、

Access VBA を使ってフォルダ内ファイル名を一覧取得し、
Excel に出力する方法を完全解説します。

すべて コピペで動く コードだけを掲載しています。


フォルダ内のファイル一覧を取得する基本(Dir関数)

Access でファイル名一覧を取得する場合、
最もシンプルなのは Dir関数 を使う方法です。


Dir関数の基本(最初の1件+次の件)

fname = Dir(“C:\Data\*.pdf”) ‘最初の1件
fname = Dir() ‘次のファイル

Accessでファイル名一覧をExcelに出力する全体コード

以下のコードをフォームのボタンに貼るだけで動きます。


フォルダ内ファイル一覧を Excel へ出力する完全コード(コピペ可)

Private Sub コマンド0_Click()

Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Dim fPath As String
Dim fname As String
Dim row As Long

‘=== ① 取得対象フォルダ ===
fPath = “C:\Data\PDF\” ‘最後は「\」で終わること

‘=== ② Excel起動 ===
Set xlApp = CreateObject(“Excel.Application”)
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
xlApp.Visible = True

‘=== ③ 1行目に見出し ===
xlSheet.Range(“A1”).Value = “ファイル名”
xlSheet.Range(“B1”).Value = “更新日”
xlSheet.Range(“C1”).Value = “サイズ(Bytes)”

row = 2

‘=== ④ Dirでファイル一覧取得 ===
fname = Dir(fPath & “*.*”) ‘すべてのファイル

Do While fname <> “”

xlSheet.Cells(row, 1).Value = fname
xlSheet.Cells(row, 2).Value = FileDateTime(fPath & fname)
xlSheet.Cells(row, 3).Value = FileLen(fPath & fname)

row = row + 1

fname = Dir() ‘次のファイル

Loop

MsgBox “Excelへの出力が完了しました。”

End Sub

特定の種類だけ取得したい場合(PDFだけ、Excelだけ)


PDFのみ

fname = Dir(fPath & “*.pdf”)

Excelファイルのみ

fname = Dir(fPath & “*.xlsx”)

画像ファイル

fname = Dir(fPath & “*.jpg”)

フォルダ選択ダイアログを使う(実務で便利)

毎回パスを書き換えるのが面倒な場合は、
ユーザーがフォルダを選べるようにします。


フォルダ選択ダイアログ付きコード

Private Function SelectFolder() As String

With Application.FileDialog(msoFileDialogFolderPicker)
.Title = “フォルダを選択してください”
If .Show = -1 Then
SelectFolder = .SelectedItems(1) & “\”
Else
SelectFolder = “”
End If
End With

End Function

呼び出し側:

fPath = SelectFolder()
If fPath = “” Then Exit Sub

ファイル一覧をAccessテーブルにも保存できる

Excelでなく Access テーブルへ保存したい場合はこちら。


Accessテーブルへ追加するコード

CurrentDb.Execute _
“INSERT INTO T_FileList (FileName, UpdateDate, Size) ” & _
“VALUES(‘” & fname & “‘,#” & FileDateTime(fPath & fname) & “#,” & FileLen(fPath & fname) & “)”

よくあるエラーと対策


フォルダパスの末尾に「\」がない

"C:\Data" では動かない
"C:\Data\" と最後に「\」が必要


対象ファイルが0件

→ Dir() が空のまま
"*.pdf""*.*" の指定を確認


Excel が既に開いていて競合

→ 実行前にExcelを閉じるか、内部で new instance を開く


補足リンク(関連記事)


まとめ

  • Access VBA でフォルダ内ファイル一覧を簡単に取得できる

  • Dir関数でファイル名、FileDateTimeで更新日、FileLenでサイズが取れる

  • Excel出力、Accessテーブル格納など応用が多い

  • フォルダ選択ダイアログを使えば実務にそのまま使える

  • コードはすべてコピペで動作する