Menampilkan file dan folder secara rekursif dengan Excel VBA
Tanggal publikasi:
Diperbarui:
Artikel teknis > Menampilkan file dan folder secara rekursif dengan Excel VBA
Konteks 2026 dan penggunaan yang aman
Kesimpulan: Mengunjungi kembali setiap folder, memancarkan berkas yang Anda butuhkan, dan melewatkan setiap folder anak kembali ke prosedur yang sama. Tambahkan penanganan explisit error dan kebijakan untuk persimpangan, link simbolik, folder tersembunyi, dan path yang ditolak.
Yang akan Anda pelajari
- Bagaimana Sistem Berkas Obyek menampilkan folder, subfolder, berkas, nama, dan jalur.
- Bagaimana rekursi membangun sebuah pohon lengkap dan mengapa dalam atau pohon siklik perlu pengaman.
- Bagaimana menulis hasil ke lembar kerja tanpa sel lambat-by- operasi sel pada skala besar.
Untuk siapa ini: Pengguna excel menginventoring tree direktori Windows yang dikendalikan.
Konteks 2026: Sampel ini mencerminkan tes lokal asli penulis. Hak validasi dan perilaku link pada salinan struktur direktori Anda, dan pertimbangkan PowerShell atau alat inventaris khusus untuk pohon yang sangat besar atau security- sensitif.
Catatan keamanan: Contoh perintah dan konfigurasi dalam artikel asli belum dijalankan ulang dalam lingkungan produksi saat ini. Verifikasi versi yang didukung, cadangan, kendali akses, dan langkah rollback dalam lingkungan tes yang terpisah sebelum menerapkannya.
Sumber resmi utama
Ikhtisar
Artikel ini menjelaskan cara mendapatkan daftar file dan daftar folder, termasuk subfolder, menggunakan VBA (makro Excel). Artikel ini ditujukan bagi orang yang ingin memprogram tugas-tugas berikut ini
- Saya ingin mendapatkan daftar semua file atau folder di bawah folder dengan jalur lengkapnya.
- Anda ingin melakukan pemrosesan dalam satu lingkaran untuk file atau folder di bawah folder.
Daftar isi
1. Metode pemrograman
Contoh referensi pemrograman diberikan di bawah ini.
Karena dibuat dalam Fungsi, saya ingin menyalinnya apa adanya dan memiliki panggilan metode yang dibuat dari Sub.
'Parameter Examples
'## filePath C:\Users\user\Desktop\test\
'## kind false:folder, true:file
'## list
Function getFolderOrFile(filePath As String, kind As Boolean, list As Collection) As Collection
'delete\
Dim filePathEnd As String
filePathEnd = Right(filePath, 1)
If filePathEnd = "\" Then
filePath = Left(filePath, Len(filePath) - 1)
End If
'Folder existence check
Dim result As String
result = Dir(filePath, vbDirectory)
If result = "" Then
MsgBox "File does not exist!"
Exit Function
End If
If kind Then
Dim buf As String
buf = Dir(filePath & "\*.*")
Do While buf <> ""
list.Add filePath & "\" & buf
buf = Dir()
Loop
Else
list.Add filePath
End If
Dim folder As Object
With CreateObject("Scripting.FileSystemObject")
For Each folder In .GetFolder(filePath).SubFolders
getFolderOrFile folder.Path, kind, list
Next folder
End With
End Function
Untuk menggunakannya, berikan yang berikut ini sebagai argumen.
- filePath: direktori. Contoh.)C:\Users\user\Desktop\test
- kind: Lulus benar, salah. Jika Benar, mengembalikan daftar file. Jika false, mengembalikan daftar folder.
- list: Koleksi digunakan untuk menyimpan hasil. Contoh implementasi diberikan di bawah ini.
Contoh implementasi dari pemanggilan Fungsi aktual ditunjukkan di bawah ini.
Sub test()
Dim list As Collection
Set list = New Collection
getFolderOrFile "C:\Users\user\Desktop\test", False, list
Dim item As Variant
For Each item In list
'------TODO------
ThisWorkbook.Worksheets(1).Cells(1, 1).Value = item
Next
End Sub
Memanggil getFolderOrFile akan menyimpan daftar file atau daftar folder dalam daftar. Contoh implementasi adalah False, sehingga daftar folder disimpan.
Jelaskan proses yang ingin Anda lakukan di bagian "TODO" dalam pernyataan For. ITEM bisa diperlakukan sebagai variabel String.
Sumber referensi adalah proses pengaturan daftar yang diperoleh ke A1 di Excel. (Proses ini berulang kali menimpa sel yang sama.)
2. Deskripsi Kode.
Ini adalah akhir dari instruksi tentang cara menggunakan sistem, diikuti oleh penjelasan kode.
Detailnya bisa dilihat dalam kode, tetapi poin kuncinya adalah panggilan lebih lanjut ke getFolderOrFile dalam metode getFolderOrFile.
Dalam proses pencarian folder, proses selanjutnya diulangi dengan memanggil proses pencarian folder, yang merupakan mekanisme untuk mencari semua folder.
Dengan memanggil metodenya sendiri, ia berulang kali memanggil metodenya sendiri selama folder ditemukan, mencari semua folder.
3. ringkasan
Jika Anda memerlukan bantuan mengenai cara mendapatkan daftar file dan daftar folder, termasuk subfolder, dengan menggunakan VBA (makro Excel), silakan merujuk ke bagian ini.
Semoga penjelasan ini membantu.
Artikel teknis
Profil
Kontak