「このフォルダにどんなファイルが入ってたっけ?」
そんなふうに思って、フォルダを何度も開いて探した経験はありませんか?
実は、Excel VBAを使えば、エクセルを開くだけで同じフォルダ内のファイル一覧を自動作成することができます。
しかも、更新日時・ファイル種類・サイズまで一目で分かり、ダブルクリックするだけでフォルダやファイルを開ける便利仕様です。
このページでは、
・Excelを開いた瞬間に
・フォルダ内のファイル一覧を自動生成し
・そのままダブルクリックで開ける
という、実務で本当に使えるVBAコードを紹介します。
「ファイル管理をExcelで効率化したい」
「VBAで業務を自動化したい」
そんな方は、ぜひ最後まで読んでみてください。
Excelを開くだけで同じフォルダ内のファイル一覧を自動作成!ダブルクリックで開けるVBAコード
Excelを開くだけで同じフォルダ内のファイル一覧を自動作成!ダブルクリックで開けるVBAコードです。
まずは準備です。
エクセルのシートに下のように準備しておきます。
A列:フォルダ名・ファイル名
B列:更新日時
C列:ファイルの種類
D列:ファイルサイズ

1.「alt」 +「F11」 を同時押し →「ThisWorkbook」をダブルクリック

2.右側にコードを入力

3.「挿入」→「標準モジュール」をクリック

4.「Module1」をダブルクリック

5.右側にコードを入力

6.「Sheet1(Sheet1)」をダブルクリック

7.右側にコードを入力

3か所にコードを入力したら、上書き保存してエクセルを一旦閉じます。
8.フォルダ内でエクセルを開く
リストを作りたいフォルダの中に、先程作ったエクセルファイルを入れて、開きます。

9.リストを自動生成 →A2列以下のセルをダブルクリック
リストが自動生成されました。
A2以下の列のセルをダブルクリックしてみます。
ここでは、A2セルをダブルクリックします。

10.ファイルが開く
「B」というファイル名のファイルが開きました!

同じように、A3セルをダブルクリックすれば、そのファイルやフォルダが開きます。
これならフォルダやファイルの検索も簡単だし、並べ替えも簡単です。
まとめ
今回は、Excelを開くだけで同じフォルダ内のファイル一覧を自動作成し、ダブルクリックで開けるVBAマクロを紹介しました。
このマクロを使えば、
・フォルダ内のファイルを一瞬で可視化
・更新日時・種類・サイズも自動取得
・エクスプローラーを開かずに目的のファイルへアクセス
・書類管理や共有フォルダ整理の手間を大幅削減
といった効果が期待できます。
一度仕込んでしまえば、あとはExcelを開くだけで自動更新されるので、日常業務のストレスがかなり減ります。
さらに、
拡張子フィルターや並び替え、検索機能などを追加すれば、
「簡易ファイル管理ツール」としても十分実用レベルになります。
このページのコードをベースに、
あなたの業務に合わせてカスタマイズしてみてはいかがでしょうか。
コードの紹介
最後に今回使ったコードの紹介です。
1.ThisWorkbook
Private Sub Workbook_Open()
Call CreateFileList
End Sub
2.Module1
Sub CreateFileList()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(1) ' 必要ならシート名指定に変更
Dim folderPath As String
folderPath = ThisWorkbook.Path
If folderPath = "" Then
MsgBox "このブックはまだ保存されていません。", vbExclamation
Exit Sub
End If
' 見出し
ws.Range("A1").Value = "フォルダ/ファイル名"
ws.Range("B1").Value = "更新日時"
ws.Range("C1").Value = "種類"
ws.Range("D1").Value = "サイズ(KB)"
ws.Range("A2:D10000").ClearContents
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim targetFolder As Object
Set targetFolder = fso.GetFolder(folderPath)
Dim r As Long
r = 2
' フォルダ一覧
Dim subFolder As Object
For Each subFolder In targetFolder.SubFolders
ws.Cells(r, 1).Value = subFolder.Name
ws.Cells(r, 2).Value = subFolder.DateLastModified
ws.Cells(r, 3).Value = "フォルダ"
ws.Cells(r, 4).Value = ""
ws.Cells(r, 5).Value = subFolder.Path ' 開く用の実パス(非表示列)
r = r + 1
Next
' ファイル一覧
Dim fileItem As Object
For Each fileItem In targetFolder.Files
ws.Cells(r, 1).Value = fileItem.Name
ws.Cells(r, 2).Value = fileItem.DateLastModified
ws.Cells(r, 3).Value = fso.GetExtensionName(fileItem.Name)
ws.Cells(r, 4).Value = Round(fileItem.Size / 1024, 1)
ws.Cells(r, 5).Value = fileItem.Path ' 開く用の実パス(非表示列)
r = r + 1
Next
ws.Columns("E").Hidden = True ' パス列を隠す
ws.Columns("A:D").AutoFit
End Sub
3.Sheet1(Sheet1)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Row < 2 Or Target.Column <> 1 Then Exit Sub
Dim fullPath As String
fullPath = Me.Cells(Target.Row, 5).Value
If fullPath = "" Then Exit Sub
Cancel = True
Shell "explorer.exe """ & fullPath & """", vbNormalFocus
End Sub

コメント