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

Klasör ve alt klasörlerdeki tüm dosyalar bir çalışma sayfasına nasıl listelenir?

Hiç bir klasördeki tüm dosya adlarını, alt klasörlerinde bulunan dosyalar da dahil olmak üzere bir çalışma sayfasında listelemeyi denediniz mi? Aslında, bir klasördeki ve onun alt klasöründeki dosya adlarını Excel'de listelemenin doğrudan bir yolu yoktur, ancak bugün, bu işi çözmek için bazı hızlı hileler sunacağım.

Klasör ve alt klasördeki tüm dosya adlarını VBA kodu ile listeleyin

Kutools for Excel ile klasör ve alt klasördeki tüm dosya adlarını hızlı ve kolay bir şekilde listeleyin


Normalde, Excel'in bu görevle başa çıkmak için yerleşik özelliği yoktur, ancak bu sorunu tamamlamak için aşağıdaki VBA kodunu uygulayabilirsiniz.

1. Dosya adlarını listeleyen yeni bir çalışma sayfasını etkinleştirin.

2. Basılı tutun ALT + F11 Excel'de anahtarlar ve açılır Uygulamalar için Microsoft Visual Basic pencere.

3. tıklayın Ekle > modülve aşağıdaki kodu Modül Penceresi.

VBA kodu: Klasör ve alt klasördeki tüm dosya adlarını listeleyin

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. Kodu Modüle yapıştırdıktan sonra, F5 bu kodu çalıştırmak için anahtar ve bir Makrolar iletişim kutusu açılır, Ana Liste makro adını ve ardından koşmak düğmesi, ekran görüntüsüne bakın:

1. klasör alt klasöründeki doc list dosyaları

5. Ve bu da Araştır penceresi, lütfen alt klasörler dahil tüm dosya adlarını listelemek istediğiniz klasörü seçin, ekran görüntüsüne bakın:

2. klasör alt klasöründeki doc list dosyaları

6. Klasörü belirledikten sonra, OK düğmesi ve klasör ve alt klasörlerindeki tüm dosya adları A2 hücresinden geçerli çalışma sayfasında listelenmiştir, ekran görüntülerine bakın:

3. klasör alt klasöründeki doc list dosyaları
1
4. klasör alt klasöründeki doc list dosyaları

Yukarıdaki kodla, sadece dosya adlarını listeleyebilirsiniz, bazen dosya boyutu, dosya türü, oluşturulma zamanı, klasör içeren vb. Gibi diğer öznitelikleri listelemeniz gerekir. Kutools for Excel kullanışlı bir işlev içerir - Dosya Adı Listesi, bu özellikle, bir klasördeki ve alt klasörlerindeki tüm veya belirli dosya adlarını hızla listeleyebilirsiniz.

Kutools for Excel : 300'den fazla kullanışlı Excel eklentisi ile 30 günde sınırlama olmaksızın ücretsiz deneyin.

Kurduktan sonra Kutools for Excellütfen aşağıdaki adımları uygulayın:

1. tıklayın kuruluş > İthalat ihracat > Dosya Adı Listesi, ekran görüntüsüne bakın:

2. In Dosya Adı Listesi iletişim kutusunda aşağıdaki işlemleri yapın:

A: Tıklayın 7. klasör alt klasöründeki doc list dosyalarıdosya adlarını listelemek istediğiniz klasörü seçmek için düğmesine basın;

BListeden listelemek istediğiniz dosya türünü belirtin. Dosya türü Bölüm;

C: Listeden görüntülemek istediğiniz bir dosya boyutu birimi seçin. Dosya boyutu birimi Bölüm.

not: Alt klasördeki dosya adlarını listelemek için lütfen kontrol edin Dosyaları alt dizinlere dahil etayrıca kontrol edebilirsiniz Gizli dosya ve klasörleri dahil et gerek duyduğunuz kadar. Kontrol edersen Köprüler oluştur seçeneği, her dosya adı ve klasör için köprüler oluşturacaktır.

Hemen indirin ve ücretsiz deneme!

3. Sonra tıklayın OK düğmesi, seçilen klasör ve alt klasörlerinde bulunan tüm dosyalar yeni bir çalışma sayfasında aşağıdaki özniteliklerle görüntülendi. Ekran görüntüsüne bakın:

8. klasör alt klasöründeki doc list dosyaları

Bu Dosya Adı Listesi yardımcı programı hakkında daha fazla ayrıntı öğrenmek için tıklayın.

Kutools for Excel'i şimdi indirin ve ücretsiz deneyin!


Kutools for Excel: 300'den fazla kullanışlı Excel eklentisi ile 30 günde sınırlama olmaksızın ücretsiz deneyin. Hemen indirin ve ücretsiz deneme!

En İyi Ofis Üretkenliği Araçları

Kutools for Excel Sorunlarınızın Çoğunu Çözer ve Verimliliğinizi% 80 Artırır

  • Yeniden: Hızlıca yerleştirin karmaşık formüller, grafikler ve daha önce kullandığınız her şey; Hücreleri Şifrele şifre ile; Posta Listesi Oluşturun ve e-posta gönder ...
  • Süper Formül Çubuğu (birden çok metin ve formül satırını kolayca düzenleyin); Okuma Düzeni (çok sayıda hücreyi kolayca okuyun ve düzenleyin); Filtrelenmiş Aralığa Yapıştır...
  • Hücreleri / Satırları / Sütunları Birleştirme Veri kaybetmeden; Bölünmüş Hücre İçeriği; Yinelenen Satırları / Sütunları Birleştirme... Yinelenen Hücreleri Önleyin; Aralıkları Karşılaştır...
  • Yinelenen veya Benzersiz'i seçin Satırlar; Boş Satırları Seçin (tüm hücreler boştur); Süper Bul ve Bulanık Bul Birçok Çalışma Kitabında; Rastgele Seçim ...
  • Tam kopya Formül referansını değiştirmeden Birden Çok Hücre; Otomatik Referans Oluştur Birden Çok Sayfaya; Madde İşaretleri Ekle, Onay Kutuları ve daha fazlası ...
  • Metni Çıkar, Metin Ekle, Konuma Göre Kaldır, Alanı Kaldır; Sayfalama Alt Toplamları Oluşturma ve Yazdırma; Hücre İçeriği ve Yorumları Arasında Dönüştür...
  • Süper Filtre (filtre şemalarını kaydedin ve diğer sayfalara uygulayın); Gelişmiş Sıralama ay / hafta / gün, sıklık ve daha fazlasına göre; Özel Filtre kalın, italik ...
  • Çalışma Kitaplarını ve Çalışma Sayfalarını Birleştirin; Tabloları anahtar sütunlara göre birleştirin; Verileri Birden Çok Sayfaya Bölme; Toplu dönüştürme xls, xlsx ve PDF...
  • 300'den fazla güçlü özellik. Office / Excel 2007-2021 ve 365'i destekler. Tüm dilleri destekler. Kuruluşunuzda veya kuruluşunuzda kolay devreye alma. Tam özellikler 30 günlük ücretsiz deneme. 60 günlük para iade garantisi.
kte sekmesi 201905

Office Tab, Office'e Sekmeli Arayüz Getirir ve İşinizi Çok Daha Kolay Hale Getirir

  • Word, Excel, PowerPoint'te sekmeli düzenlemeyi ve okumayı etkinleştirin, Publisher, Access, Visio ve Project.
  • Yeni pencereler yerine aynı pencerenin yeni sekmelerinde birden çok belge açın ve oluşturun.
  • Üretkenliğinizi% 50 artırır ve her gün sizin için yüzlerce fare tıklamasını azaltır!
ofis tabanı
Yorumları sıralama ölçütü
Yorumlar (20)
Henüz derecelendirme yok. İlk değerlendiren siz olun!
Bu yorum sitedeki moderatör tarafından en aza indirildi
güzel yazı teşekkürler :D
Bu yorum sitedeki moderatör tarafından en aza indirildi
canım, bu harika yardımcı program için teşekkürler.....!!! anilkumar
Bu yorum sitedeki moderatör tarafından en aza indirildi
A2 yerine B2 hücresinden LİSTELENEN DOSYA ADLARINI ALMAK İÇİN BU SORGU NASIL ÇALIŞTIRILIR?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba Satiş,
Aşağıdaki kod, dosya adlarını seçtiğiniz herhangi bir hücreye koymanıza yardımcı olabilir, lütfen deneyin:

Alt Ana Liste()
On Error Resume Next
Set xRg = Application.InputBox("Dosya adlarını koymak için lütfen bir hücre seçin:", "KuTools For Excel", Selection.Address, , , , , 8)
xRg Hiçbir Şey Değilse, Sub'dan Çıkın
xRg = xRg(1) olarak ayarla
Klasörü Ayarla = Application.FileDialog(msoFileDialogFolderPicker)
If Folder.Show <> -1 Sonra Sub'dan Çıkın
xDir = Klasör.SelectedItems(1)
Call ListFilesInFolder(xRg, xDir, True)
End Sub
Alt ListeFilesInFolder(Aralık Olarak ByVal xRg, Dizge Olarak ByVal xFolderName, Boolean Olarak ByVal xIsSubfolders)
Nesne Olarak xFileSystemObject Dim
Nesne olarak xFolder'ı karart
xSubFolder'ı Nesne Olarak Karartın
XFile'ı Nesne Olarak Karartın
RowIndex As Long olarak karart
xFileSystemObject = CreateObject("Scripting.FileSystemObject") olarak ayarlayın
xFolder = xFileSystemObject.GetFolder(xFolderName) olarak ayarlayın
satırIndex = 1
xFolder.Files'daki Her xFile İçin
xRg.Formula = xFile.Name
xRg = xRg.Offset(rowIndex) olarak ayarlayın
satırIndex = 1
Sonraki xDosya
xIsSubfolders ise
xFolder.SubFolders İçindeki Her xSubFolder İçin
ListFilesInFolder xRg, xSubFolder.Path, Doğru
Sonraki xAltKlasör
Eğer son
xFile'ı ayarla = Hiçbir şey
xFolder'ı ayarla = Hiçbir şey
xFileSystemObject = Hiçbir Şeyi Ayarla
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
İyi!!! seviyorum, teşekkürler
Bu yorum sitedeki moderatör tarafından en aza indirildi
Emin değilim .. ama uzun klasörleri dikkate alıyor mu? benzer bir kod yazdım ve klasör/dosya yolunun 256 karakteri aştığı yerde başarısız oluyor mu? Düşünceler lütfen?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Yararlı makale için çok teşekkür ederim!
Listeyi otomatik olarak nasıl güncelleyebilir ve değişiklikleri nasıl tespit edebilirim?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Bu, özyinelemeli çağrıyı almak için kodumu dönüştürmeme yardımcı oldu, ancak nesneleri kullanma şeklinizi merak ediyorum. Çalışma kitapları, çalışma sayfaları veya dosya sistemi nesneleri olsun, nesnelerimi oldukları gibi tanımlamayı tercih ederim. (örneğin wbDest'i excel.workbook olarak karartın, wsDest'i excel.çalışma sayfası olarak karartın. Bu şekilde, etkin sayfanın ne olduğu konusunda asla endişelenmeme gerek kalmaz.

Ayrıca .show - if.show <>-1'in kullanımını merak ettim ve if.show = false kullanırsanız insanların daha kolay anlayacağını düşünmekten kendimi alamıyorum.

Ve hedefe yazma açısından, hücreleri ve formülü kullanmanın uzun bir yol gibi göründüğünü hissettim.

Yani kodumda, örneğin,
wsDest.Range("B" & CurRow) = dosya.name
(CurRow = Geçerli Satır)

Eleştirmiyorum, sadece kişisel tercihiniz dışında herhangi bir nedenle böyle yapıp yapmadığınızı merak ediyorum. - Her zaman öğrenmeye istekli


Ama bunun dışında yardımın için teşekkürler
Bu yorum sitedeki moderatör tarafından en aza indirildi
Bu kod için teşekkür ederim, bir çalışma isteğinde bana yardımcı oldu, artık bu sonuçları daha fazla dönüşüm için Access'e aktarabiliyorum. Takdir edin.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Yukarıdaki kodda alt "GetFileOwner()" kullanılmaz.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba atlamacı,
Yukarıdaki kod Excel'imde iyi çalışıyor, hangi Excel sürümünü kullanıyorsunuz?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Extremamente Elegante este codigo!
Bu yorum sitedeki moderatör tarafından en aza indirildi
ByVal xIsSubfolders As Boolean parametresinin amacı neydi?
Bu yorum sitedeki moderatör tarafından en aza indirildi
VBA'm değişken klasörünün tanımlanmadığını söylüyor. Birileri bunun neden olduğunu biliyor mu?
Bu yorum sitedeki moderatör tarafından en aza indirildi
VBA için gerçekten yeni. Yukarıdaki kodu nasıl kullanırım, ancak dosya yolunu her seferinde aramak zorunda kalmamak için yerleşik olarak bulundurur muyum?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Hey, tüm listeden bir uzantı çıkarmam gerekirse, nerede değişiklik yapmalıyım?
Bu yorum sitedeki moderatör tarafından en aza indirildi
MAC'te de çalışıyor mu?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Kodunuzu geri dönüşümünü sağlamak ve siz İptal'e basana kadar klasör iletişim kutusunu sürekli olarak yeniden çalıştırmak için değiştirdim. Maalesef bazı hatalar üretiyor.1. Seçilen bir klasöre alt klasörler dahil olursa, seçilen bir sonraki klasör sayısal sıranın dışına çıkar.2. Seçilen bir klasöre alt klasörler dahil olursa, eklediğiniz klasör sayısına bağlı olarak İptal düğmesi tekrarlanmalı ve tekrarlanmalıdır.
Kodu:
Alt Ana Liste()
'güncelleme Extendoffice
Klasörü ayarla = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Sonra Sub Exit
xDir = klasör.SelectedItems(1)
Call ListFilesInFolder(xDir, True)
SubSub ListFilesInFolder'ı Sonlandır(Dize Olarak ByVal xFolderName, Boolean Olarak ByVal xIsSubfolders)
Nesne Olarak xFileSystemObject Dim
Nesne olarak xFolder'ı karart
xSubFolder'ı Nesne Olarak Karartın
XFile'ı Nesne Olarak Karartın
RowIndex As Long olarak karart
xFileSystemObject = CreateObject("Scripting.FileSystemObject") olarak ayarlayın
xFolder = xFileSystemObject.GetFolder(xFolderName) olarak ayarlayın
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
xFolder.Files'daki Her xFile İçin
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
satırIndex = satırIndex + 1
Sonraki xDosya
xIsSubfolders ise
xFolder.SubFolders İçindeki Her xSubFolder İçin
ListFilesInFolder xSubFolder.Path, Doğru
Sonraki xAltKlasör
Eğer son
xFile'ı ayarla = Hiçbir şey
xFolder'ı ayarla = Hiçbir şey
xFileSystemObject = Hiçbir Şeyi Ayarla
End Sub

herhangi bir fikir?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Üzgünüm... Yanlış kodu verdim (aşağıda), işte değiştirdiğim kod..
Kodu:
Alt Ana Liste()
On Error Resume Next
Nesne Olarak xFileSystemObject Dim
Nesne olarak xFolder'ı karart
xSubFolder'ı Nesne Olarak Karartın
XFile'ı Nesne Olarak Karartın
RowIndex As Long olarak karart
Dim cevap Varyant olarak
cevap = Yanlış
Application.FileDialog(msoFileDialogFolderPicker) ile
.Title = "Bir Klasör Seçin"
.AllowMultiSelect = Yanlış
Klasörü ayarla = Application.FileDialog(msoFileDialogFolderPicker)
if folder.Show = -1 O zaman
xDir = klasör.SelectedItems(1)
başka
Exit Sub
Eğer son
İle bitmek

Call ListFilesInFolder(xDir, True)
End Sub

Alt ListeFilesInFolder(String Olarak ByVal xFolderName, Boolean Olarak ByVal xIsSubfolders)
xFileSystemObject = CreateObject("Scripting.FileSystemObject") olarak ayarlayın
xFolder = xFileSystemObject.GetFolder(xFolderName) olarak ayarlayın
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1

' Çalışma Sayfasına bir boşluk ve ardından Klasör Adı ekleyin
satırIndex = satırIndex + 1
Application.ActiveSheet.Cells ile(rowIndex, 1)
.Value = xFolder.Name
.Yazı Tipi Boyutu = 12
.Font.FontStyle = "Kalın İtalik"
İle bitmek
satırIndex = satırIndex + 1

xFolder.Files'daki Her xFile İçin
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
satırIndex = satırIndex + 1
Sonraki xDosya
xIsSubfolders ise
xFolder.SubFolders İçindeki Her xSubFolder İçin
ListFilesInFolder xSubFolder.Path, Doğru
Sonraki xAltKlasör
satırIndex = satırIndex + 1
Eğer son

xFile'ı ayarla = Hiçbir şey
xFolder'ı ayarla = Hiçbir şey
xFileSystemObject = Hiçbir Şeyi Ayarla

Ana Listeyi Ara
End Sub


Bu yorum sitedeki moderatör tarafından en aza indirildi
Güzel çalışma, tam olarak yaratmaya çalıştığım şey. Ama bu %1000 daha iyi.
Buraya henüz hiç yorum yapılmamış
Lütfen yorum yazın
Misafir olarak yayınlama
×
Bu gönderiyi değerlendirin:
0   Karakterler
Önerilen Konumlar

Bizi takip et

Telif Hakkı © 2009 - www.extendoffice.com. | Tüm hakları Saklıdır. Tarafından desteklenmektedir ExtendOffice. | | | Site Haritası
Microsoft ve Office logosu, Microsoft Corporation'ın Amerika Birleşik Devletleri ve / veya diğer ülkelerdeki ticari markaları veya tescilli ticari markalarıdır.
Sectigo SSL ile korunmaktadır