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
  2. Deskripsi Kode.
  3. ringkasan

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.