access Excel連携・外部連携 PR

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

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

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

・Excelへ出力したい
・Accessテーブルに保存したい
・CSVとして管理したい

といった場面はよくあります。

特に、

・請求書PDFの一覧管理
・日次データ(CSV)の確認
・フォルダ監査や棚卸し
・画像ファイルの整理

などの業務では、
「フォルダ内ファイル一覧を取得する処理」が非常に役立ちます。

この記事では、
**Access VBA を使ってフォルダ内のファイル名を一覧取得し、Excelへ出力する方法**を中心に解説します。

VBAでExcelを操作し、
セルに書き込み・保存するまでの流れを、
**すべてコピペで動くコード付き**でまとめています。

「Access VBAでExcelに出力したい」「Excel操作まで含めて実装したい」
という方に向けた実践的な内容です。

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

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

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

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

Access VBAでファイル一覧を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

Access VBAでExcelを操作するポイント(セル指定・保存)

  • Excelを開く

  • 書き込む

  • 保存して閉じる

👉 コードは既存のものを流用

特定の種類だけ取得したい場合(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テーブル格納など応用が多い

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

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