📚 Kod Bankası

Excel ve VBA konularında sıfırdan ileri düzeye ücretsiz dersler, hazır makro kodları ve pratik örnekler.
Veri analizi yeteneklerinizi geliştirin, iş hayatınızda fark yaratacak Excel becerilerini bizimle kazanın.

Dersler VBA Kodları Ücretsiz
Anasayfa / Recursive VBA: Dosya Dizisindeki Tüm Excel Dosyalarını Otomatik Birleştir!

Recursive VBA: Dosya Dizisindeki Tüm Excel Dosyalarını Otomatik Birleştir!

0 yorum

🔥 Recursive Nedir? Neden Gerekli?

Bir klasörde 100 Excel dosyası var. Her hafta yeni dosyalar ekleniyor. Bütün dosyaları manuel açıp, veri kopyala? Saat harcaması! Recursive VBA ile: "Bu klasördeki TÜM Excel dosyalarını aç, veriyi birleştir" komutunu ver.

📁 Klasör Yapısı

C:\Satış_Raporları ├── 2024_Ocak.xlsx
  ├── 2024_Şubat.xlsx
  ├── Alt_Klasör1 │ ├── Bölge1.xlsx
  │ └── Bölge2.xlsx
  └── Alt_Klasör2 └── Bölge3.xlsx

💻 Recursive VBA Kodu

Sub TümDosyalarıBirleştir()
  Dim folderPath As String
  folderPath = "C:\Satış_Raporları"
  
  Call RecursiveFileLoop(folderPath)
 End Sub
 
 Private Sub RecursiveFileLoop(folderPath As String)
  Dim fso As Object
  Dim folder As Object
  Dim file As Object
  Dim subFolder As Object
  
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set folder = fso.GetFolder(folderPath)
  
  ' Bu klasördeki tüm dosyaları döngü
  For Each file In folder.Files
  If Right(file.Name, 4) = ".xlsx" Then
  ' Excel dosyasını aç ve veriyi çek
  Workbooks.Open file.Path
  ' Veriyi Ana dosyaya kopyala
  Call VeriKopyala(ActiveWorkbook)
  ActiveWorkbook.Close
  End If
  Next file
  
  ' Alt klasörleri recursive çağır
  For Each subFolder In folder.SubFolders
  Call RecursiveFileLoop(subFolder.Path)
  Next subFolder
 End Sub
 
 Private Sub VeriKopyala(sourceBook As Workbook)
  ' Kaynak dosyadaki verileri çek
  Dim sourceData As Range
  Set sourceData = sourceBook.Sheets(1).Range("A1").CurrentRegion
  
  ' Ana dosyaya yapıştır
  ThisWorkbook.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1).PasteSpecial xlPasteValues
 End Sub

(Türkçe açıklama: Kod, belirtilen klasörün içindeki tüm .xlsx dosyalarını açar. Eğer alt klasör varsa, o alt klasöre de girer (recursive) ve aynı işlemi yapır. Böylece, kaç derinlikte klasör varsa, hepsini tarar!)

🎯 Kullanım

Yalnızca folderPath'i değiştir ve Ctrl+Shift+L çalıştır. Saniyeler içinde tüm dosyalar birleştirilir!

Dikkat: Bu kod özellikle büyük dosyalarla çalışırken RAM'i çokça kullanır. İhtiyaç duyarsan memory optimize kodlar ekle!

💡 İleri: Hata Yönetimi Ekle

On Error Resume Next
 If Workbooks.Open file.Path Is Nothing Then
  MsgBox "Dosya açılamadı: " & file.Name
 End If
 On Error GoTo 0
 
 (Türkçe: Eğer dosya açılamazsa, mesaj göster ve devam et)

🎪 Challenge

3 derinlikte 50+ klasöre dağılmış 200 satış dosyası var. Recursive VBA ile hepsini 5 dakikada birleştir!

Yorumlar (0)

Henüz yorum yapılmamış. İlk yorumu sen yap!

Yorum Yap