🔥 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!
💡 İ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!
Henüz yorum yapılmamış. İlk yorumu sen yap!
Yorum Yap