Note: The other languages of the website are Google-translated. Back to English

Bagaimana cara mencantumkan semua file di folder dan subfolder ke dalam lembar kerja?

Pernahkah Anda mencoba membuat daftar semua nama file dari folder ke dalam lembar kerja termasuk file yang ada di dalam subfoldernya? Faktanya, tidak ada cara langsung bagi kami untuk mencantumkan nama file dari folder dan subfoldernya di Excel, namun, hari ini, saya akan memperkenalkan beberapa trik cepat untuk menyelesaikan pekerjaan ini.

Cantumkan semua nama file dalam folder dan subfolder dengan kode VBA

Cantumkan semua nama file dalam folder dan subfolder dengan cepat dan mudah dengan Kutools for Excel


Biasanya, Excel tidak memiliki fitur bawaan untuk menangani tugas ini, tetapi, Anda dapat menerapkan kode VBA berikut untuk menyelesaikan masalah ini.

1. Aktifkan lembar kerja baru yang akan mencantumkan nama file.

2. Tahan ALT + F11 kunci di Excel, dan itu membuka file Microsoft Visual Basic untuk Aplikasi jendela.

3. Klik Menyisipkan > Modul, dan tempel kode berikut di Jendela Modul.

Kode VBA: Cantumkan semua nama file dalam folder dan subfolder

Sub MainList()
'Updateby Extendoffice
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
Call ListFilesInFolder(xDir, True)
End Sub
Sub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Object
Dim xFile As Object
Dim rowIndex As Long
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
For Each xFile In xFolder.Files
  Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
  rowIndex = rowIndex + 1
Next xFile
If xIsSubfolders Then
  For Each xSubFolder In xFolder.SubFolders
    ListFilesInFolder xSubFolder.Path, True
  Next xSubFolder
End If
Set xFile = Nothing
Set xFolder = Nothing
Set xFileSystemObject = Nothing
End Sub
Function GetFileOwner(ByVal xPath As String, ByVal xName As String)
Dim xFolder As Object
Dim xFolderItem As Object
Dim xShell As Object
xName = StrConv(xName, vbUnicode)
xPath = StrConv(xPath, vbUnicode)
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.Namespace(StrConv(xPath, vbFromUnicode))
If Not xFolder Is Nothing Then
  Set xFolderItem = xFolder.ParseName(StrConv(xName, vbFromUnicode))
End If
If Not xFolderItem Is Nothing Then
  GetFileOwner = xFolder.GetDetailsOf(xFolderItem, 8)
Else
  GetFileOwner = ""
End If
Set xShell = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
End Function

4. Setelah menempelkan kode ke dalam Modul, tekan F5 kunci untuk menjalankan kode ini, dan a Macro kotak dialog muncul, pilih Daftar Utama nama makro, lalu klik Run tombol, lihat tangkapan layar:

doc daftar file dalam folder subfolder 1

5. Dan di Browse jendela, pilih folder yang Anda ingin daftar semua nama file termasuk subfolder, lihat tangkapan layar:

doc daftar file dalam folder subfolder 2

6. Setelah menentukan foldernya, lalu klik OK tombol, dan semua nama file di folder dan subfoldernya telah terdaftar ke dalam lembar kerja saat ini dari sel A2, lihat tangkapan layar:

doc daftar file dalam folder subfolder 3
1
doc daftar file dalam folder subfolder 4

Dengan kode di atas, Anda hanya dapat mencantumkan nama file, terkadang Anda perlu mencantumkan atribut lain, seperti ukuran file, jenis file, waktu pembuatan, folder yang berisi, dan sebagainya. Kutools untuk Excel berisi fungsi yang berguna - Daftar Nama File, dengan fitur ini, Anda dapat dengan cepat mencantumkan semua atau jenis nama file tertentu di dalam folder dan subfoldernya.

Kutools untuk Excel : dengan lebih dari 300 add-in Excel yang praktis, gratis untuk dicoba tanpa batasan dalam 30 hari.

Setelah menginstal Kutools untuk Excel, lakukan dengan langkah-langkah berikut:

1. Klik Enterprise > Ekspor Impor > Daftar Nama File, lihat tangkapan layar:

2. di Daftar Nama File kotak dialog, lakukan operasi berikut:

A: Klik doc daftar file dalam folder subfolder 7tombol untuk memilih folder yang Anda ingin daftar nama filenya;

B: Tentukan jenis file yang ingin Anda daftarkan dari Jenis file bagian;

C: Pilih satu unit ukuran file yang ingin Anda tampilkan dari Unit ukuran file bagian.

Note: Untuk mencantumkan nama file dari subfolder, silakan periksa Sertakan file dalam subdirektori, Anda juga dapat memeriksa Sertakan file dan folder tersembunyi sesuai kebutuhan. Jika Anda memeriksa Buat hyperlink opsi, itu akan membuat hyperlink untuk setiap nama file dan folder.

Unduh dan uji coba gratis Sekarang!

3. Lalu klik OK tombol, semua file yang ada di folder yang dipilih dan subfoldernya telah ditampilkan dengan atribut berikut di lembar kerja baru. Lihat tangkapan layar:

doc daftar file dalam folder subfolder 8

Klik untuk mengetahui detail lebih lanjut tentang utilitas Daftar Nama File ini.

Unduh dan uji coba gratis Kutools untuk Excel Sekarang!


Kutools untuk Excel: dengan lebih dari 300 add-in Excel yang praktis, gratis untuk dicoba tanpa batasan dalam 30 hari. Unduh dan uji coba gratis Sekarang!

Alat Produktivitas Kantor Terbaik

Kutools for Excel Memecahkan Sebagian Besar Masalah Anda, dan Meningkatkan Produktivitas Anda hingga 80%

  • Reuse: Masukkan dengan cepat rumus, bagan yang kompleks dan apa pun yang pernah Anda gunakan sebelumnya; Enkripsi Sel dengan kata sandi; Buat Milis dan mengirim email ...
  • Bilah Formula Super (dengan mudah mengedit beberapa baris teks dan rumus); Membaca Tata Letak (membaca dan mengedit sel dalam jumlah besar dengan mudah); Tempel ke Rentang yang Difilter...
  • Gabungkan Sel / Baris / Kolom tanpa kehilangan Data; Pisahkan Konten Sel; Gabungkan Baris / Kolom Duplikat... Mencegah Sel Duplikat; Bandingkan Rentang...
  • Pilih Duplikat atau Unik Baris; Pilih Baris Kosong (semua sel kosong); Temukan Super dan Temukan Fuzzy di Banyak Buku Kerja; Pilih Acak ...
  • Salinan Tepat Beberapa Sel tanpa mengubah referensi rumus; Buat Referensi Otomatis ke Beberapa Lembar; Sisipkan Poin, Kotak Centang, dan lainnya ...
  • Ekstrak Teks, Tambahkan Teks, Hapus berdasarkan Posisi, Hapus Space; Membuat dan Mencetak Subtotal Paging; Konversi Konten Antar Sel dan Komentar...
  • Filter Super (simpan dan terapkan skema filter ke sheet lain); Penyortiran Lanjutan menurut bulan / minggu / hari, frekuensi dan lainnya; Filter Khusus dengan huruf tebal, miring ...
  • Gabungkan Workbooks dan WorkSheets; Gabungkan Tabel berdasarkan kolom kunci; Pisahkan Data menjadi Beberapa Lembar; Konversi Batch xls, xlsx dan PDF...
  • Lebih dari 300 fitur canggih. Mendukung Office / Excel 2007-2021 dan 365. Mendukung semua bahasa. Penerapan yang mudah di perusahaan atau organisasi Anda. Fitur lengkap Uji coba gratis 30 hari. Jaminan uang kembali 60 hari.
tab kte 201905

Tab Office Membawa antarmuka Tab ke Office, dan Membuat Pekerjaan Anda Jauh Lebih Mudah

  • Aktifkan pengeditan dan pembacaan tab di Word, Excel, PowerPoint, Publisher, Access, Visio, dan Project.
  • Buka dan buat banyak dokumen di tab baru di jendela yang sama, bukan di jendela baru.
  • Meningkatkan produktivitas Anda sebesar 50%, dan mengurangi ratusan klik mouse untuk Anda setiap hari!
officetab bawah
Urutkan komentar berdasarkan
komentar (20)
Belum ada peringkat. Jadilah yang pertama memberi peringkat!
Komentar ini diminimalkan oleh moderator di situs
Artikel yang bagus Terima kasih :D
Komentar ini diminimalkan oleh moderator di situs
sayang, Terima kasih untuk utilitas yang luar biasa ini.....!!! anilkumar
Komentar ini diminimalkan oleh moderator di situs
BAGAIMANA MEMBUAT QUERY INI BEKERJA UNTUK MENDAPATKAN NAMA FILE YANG TERCANTUM DARI sel B2, bukan A2?
Komentar ini diminimalkan oleh moderator di situs
Hai, Satish,
Kode berikut dapat membantu Anda memasukkan nama file ke sel mana pun yang Anda pilih, silakan coba:

Sub Daftar Utama()
On Error Resume Next
Set xRg = Application.InputBox("Silakan pilih sel untuk meletakkan nama file:", "KuTools For Excel", Selection.Address, , , , , 8)
Jika xRg Bukan Apa-apa Kemudian Keluar Sub
Tetapkan xRg = xRg(1)
Setel Folder = Application.FileDialog(msoFileDialogFolderPicker)
Jika Folder.Show <> -1 Kemudian Keluar Sub
xDir = Folder.SelectedItems(1)
Panggil ListFilesInFolder(xRg, xDir, True)
End Sub
Sub ListFilesInFolder(ByVal xRg Sebagai Rentang, ByVal xFolderName Sebagai String, ByVal xIsSubfolder Sebagai Boolean)
Redupkan xFileSystemObject Sebagai Objek
Redupkan xFolder Sebagai Objek
Redupkan xSubFolder Sebagai Objek
Redupkan xFile Sebagai Objek
Indeks baris redup Selamanya
Setel xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Setel xFolder = xFileSystemObject.GetFolder(xFolderName)
barisIndeks = 1
Untuk Setiap xFile Di xFolder.Files
xRg.Formula = xFile.Nama
Tetapkan xRg = xRg.Offset(rowIndex)
barisIndeks = 1
xFile berikutnya
Jika xIsSubfolder Maka
Untuk Setiap xSubFolder Di xFolder.SubFolder
ListFilesInFolder xRg, xSubFolder.Path, Benar
xSubFolder Berikutnya
End If
Setel xFile = Tidak Ada
Setel xFolder = Tidak Ada
Setel xFileSystemObject = Tidak Ada
End Sub
Komentar ini diminimalkan oleh moderator di situs
Bagus!!! menyukainya, terima kasih
Komentar ini diminimalkan oleh moderator di situs
Tidak yakin .. tetapi apakah itu mempertimbangkan folder panjang. saya menulis kode yang sama dan gagal di mana jalur folder/file melebihi 256 karakter? Pikiran silahkan?
Komentar ini diminimalkan oleh moderator di situs
Terima kasih banyak atas artikel yang bermanfaat!
Bagaimana saya bisa memperbarui daftar secara otomatis dan melihat perubahannya?
Komentar ini diminimalkan oleh moderator di situs
Ini membantu saya mengonversi kode saya untuk mendapatkan panggilan rekursif, tetapi saya bertanya-tanya tentang cara Anda menggunakan objek. Saya lebih suka mendefinisikan objek saya seperti apa adanya, baik itu buku kerja, lembar kerja, atau objek sistem file. (redupkan wbDest sebagai excel.workbook, redupkan wsDest sebagai excel.worksheet misalnya. Dengan cara ini saya tidak perlu khawatir tentang apa itu lembar aktif.

Saya juga bertanya-tanya tentang penggunaan .show - if.show <>-1, dan tidak dapat menahan perasaan bahwa akan lebih mudah bagi orang untuk memahami jika Anda menggunakan if.show = false.

Dan dalam hal menulis ke tujuan, saya merasa bahwa menggunakan sel dan formula tampaknya merupakan jalan yang panjang

Jadi dalam kode saya, saya punya, misalnya,
wsDest.Range("B" & CurRow) = fil.name
(CurRow = Baris Saat Ini)

Saya tidak mengkritik, hanya ingin tahu apakah Anda melakukannya seperti ini karena alasan apa pun selain preferensi pribadi. - Selalu mau belajar


Tapi selain itu terima kasih atas bantuannya
Komentar ini diminimalkan oleh moderator di situs
Terima kasih atas kode ini yang telah membantu saya dengan permintaan pekerjaan, saya sekarang dapat mengimpor hasil ini ke Access untuk transformasi lebih lanjut. Hargai itu.
Komentar ini diminimalkan oleh moderator di situs
Sub "GetFileOwner()" dalam kode di atas tidak digunakan.
Komentar ini diminimalkan oleh moderator di situs
Halo, pelompat,
Kode di atas berfungsi dengan baik di Excel saya, versi Excel mana yang Anda gunakan?
Komentar ini diminimalkan oleh moderator di situs
Sangat elegan este codigo!
Komentar ini diminimalkan oleh moderator di situs
Apa tujuan dari parameter ByVal xIsSubfolders As Boolean?
Komentar ini diminimalkan oleh moderator di situs
VBA saya mengatakan bahwa folder variabel tidak ditentukan. ada yang tahu mengapa ini?
Komentar ini diminimalkan oleh moderator di situs
Benar-benar baru di VBA. bagaimana cara saya menggunakan kode di atas tetapi memiliki jalur file yang terpasang di dalamnya sehingga saya tidak perlu mencarinya setiap saat?
Komentar ini diminimalkan oleh moderator di situs
Hei, jadi jika saya harus mengekstrak ekstensi dari seluruh daftar, di mana saya harus melakukan perubahan?
Komentar ini diminimalkan oleh moderator di situs
Apakah itu bekerja di MAC juga?
Komentar ini diminimalkan oleh moderator di situs
Saya telah memodifikasi kode Anda untuk membuatnya mendaur ulang dan menjalankan kembali dialog folder terus menerus sampai Anda menekan Batal. Sayangnya itu menghasilkan beberapa kesalahan.1. Jika subfolder terlibat dalam folder yang dipilih maka folder berikutnya yang dipilih menjadi tidak berurutan.2. Jika subfolder terlibat dalam folder yang dipilih, tombol Batal harus diulang dan diulang tergantung pada berapa banyak folder yang telah Anda tambahkan.
Kode:
Sub Daftar Utama()
'Perbarui oleh Extendoffice
Setel folder = Application.FileDialog(msoFileDialogFolderPicker)
Jika folder.Tampilkan <> -1 Kemudian Keluar Sub
xDir = folder.SelectedItems(1)
Panggil ListFilesInFolder(xDir, True)
Akhiri SubSub ListFilesInFolder(ByVal xFolderName Sebagai String, ByVal xIsSubfolders Sebagai Boolean)
Redupkan xFileSystemObject Sebagai Objek
Redupkan xFolder Sebagai Objek
Redupkan xSubFolder Sebagai Objek
Redupkan xFile Sebagai Objek
Indeks baris redup Selamanya
Setel xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Setel xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Baris + 1
Untuk Setiap xFile Di xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
indeks baris = indeks baris + 1
xFile berikutnya
Jika xIsSubfolder Maka
Untuk Setiap xSubFolder Di xFolder.SubFolder
ListFilesInFolder xSubFolder.Path, Benar
xSubFolder Berikutnya
End If
Setel xFile = Tidak Ada
Setel xFolder = Tidak Ada
Setel xFileSystemObject = Tidak Ada
End Sub

ada ide?
Komentar ini diminimalkan oleh moderator di situs
Maaf ... saya memberi Anda kode yang salah (di bawah), ini kode yang saya modifikasi..
Kode:
Sub Daftar Utama()
On Error Resume Next
Redupkan xFileSystemObject Sebagai Objek
Redupkan xFolder Sebagai Objek
Redupkan xSubFolder Sebagai Objek
Redupkan xFile Sebagai Objek
Indeks baris redup Selamanya
Jawaban redup Sebagai Varian
jawaban = salah
Dengan Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Pilih Folder"
.AllowMultiSelect = Salah
Setel folder = Application.FileDialog(msoFileDialogFolderPicker)
Jika folder.Show = -1 Kemudian
xDir = folder.SelectedItems(1)
Lain
Keluar dari Sub
End If
Berakhir dengan

Panggil ListFilesInFolder(xDir, True)
End Sub

Sub ListFilesInFolder(ByVal xFolderName Sebagai String, ByVal xIsSubfolders Sebagai Boolean)
Setel xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Setel xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Baris + 1

' Tambahkan spasi lalu Nama Folder ke Lembar Kerja
indeks baris = indeks baris + 1
Dengan Application.ActiveSheet.Cells(rowIndex, 1)
.Nilai = xFolder.Nama
.Font.Ukuran = 12
.Font.FontStyle = "Tebal Miring"
Berakhir dengan
indeks baris = indeks baris + 1

Untuk Setiap xFile Di xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
indeks baris = indeks baris + 1
xFile berikutnya
Jika xIsSubfolder Maka
Untuk Setiap xSubFolder Di xFolder.SubFolder
ListFilesInFolder xSubFolder.Path, Benar
xSubFolder Berikutnya
indeks baris = indeks baris + 1
End If

Setel xFile = Tidak Ada
Setel xFolder = Tidak Ada
Setel xFileSystemObject = Tidak Ada

Hubungi MainList
End Sub


Komentar ini diminimalkan oleh moderator di situs
Kerja bagus, persis apa yang saya coba buat. Tapi ini 1000% lebih baik.
Belum ada komentar yang diposting di sini
Tinggalkan komentar anda
Posting sebagai Tamu
×
Beri peringkat pos ini:
0   Karakter
Lokasi yang Disarankan

Ikuti kami

Hak Cipta © 2009 - www.extendoffice.com. | Seluruh hak cipta. Dipersembahkan oleh ExtendOffice. | Peta Situs
Microsoft dan logo Office adalah merek dagang atau merek dagang terdaftar dari Microsoft Corporation di Amerika Serikat dan / atau negara lain.
Dilindungi oleh Sectigo SSL