Farklı .xlsx uzantılı dosyalardaki verileri tek dosyada birleştirmek.

Katılım
21 Mart 2021
Mesajlar
4
Excel Vers. ve Dili
Excel 2016
Merhaba, iyi forumlar. Başlıkta da belirttiğim üzere, bir çok farklı .xlsx uzantılı Excel çalışma dosyalarındaki verileri tek bir çalışma sayfasında alt alta getirmek istiyorum. Veriler tek bir sayfada toplanıp alt alta gelse benim için yeterli, sonrasında rötuş yapabilirim fakat temel işlemi gerçekleştirecek makroyu vs. beceremedim. Pratik yolunu bilen, Excel'e hakim forum kullanıcılarından değerleri vakitlerini ayırıp yardımcı olmalarını dilerim.

Teyit etme amaçlı görsel paylaşıyorum, klasördeki Excellerin hepsinde veri mevcut, amacım onların içindeki verilerin tek bir sayfada iç içe girmeden alt alta toplanmalarını sağlamak.
https://hizliresim.com/7Kurgk
 
Katılım
15 Şubat 2021
Mesajlar
52
Excel Vers. ve Dili
Excel 2016/VBA
Altın Üyelik Bitiş Tarihi
17-02-2022
deneyiniz.

Kod:
Sub merge()
Dim f As String
Dim fl As String
Dim wb As Workbook

With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Birleştirilecek dosyaların olduğu klasörü seçin"
.ButtonName = "Dosya Seç"

    If .Show = 0 Then
    Exit Sub
    Else
    f = .SelectedItems(1) & "\"
    End If
    
fl = Dir(f & "*.xlsx")
Application.ScreenUpdating = False
    Do Until fl = ""
    Set wb = Workbooks.Open(f & fl)
    sat = ThisWorkbook.Sheets(1).Cells(Rows.Count, "A").End(3).Row + 1
    sut = ThisWorkbook.Sheets(1).Cells(1, Columns.Count).End(1).Column
    sat1 = wb.Sheets(1).Cells(Rows.Count, "A").End(3).Row
    sut2 = wb.Sheets(1).Cells(1, Columns.Count).End(1).Column
    
    wb.Sheets(1).Range("a2").resize(sat1, sut2).Copy
    
    Paste ThisWorkbook.Sheets(1).Range(Cells(sat, 1), Cells(sat, sut))
    wb.Close
    fl = Dir
    Loop
End With
Application.ScreenUpdating = True

End Sub
 
Katılım
21 Mart 2021
Mesajlar
4
Excel Vers. ve Dili
Excel 2016
Merhaba, Compile Error aldım. Sub or Function not defined diyor.

 
Katılım
15 Şubat 2021
Mesajlar
52
Excel Vers. ve Dili
Excel 2016/VBA
Altın Üyelik Bitiş Tarihi
17-02-2022
Kodları sayfa1 e kopyalayıp denermisiniz. Modüle kopyalamayın.
 
Katılım
15 Şubat 2021
Mesajlar
52
Excel Vers. ve Dili
Excel 2016/VBA
Altın Üyelik Bitiş Tarihi
17-02-2022
Hayır. Şu şekilde anlatayım. Siz kodları module içerisine kopyalamışsınız. Kod arayüzünde modül kısmının üstünde yazan sayfa1 e çift tıklayıp sayfa1 içerisine kopyalayınız.
 

stier_22

Altın Üye
Katılım
15 Eylül 2009
Mesajlar
147
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
04-01-2028
hocam bende de buna benzer bir soru var sizin dediğiniz formülü yaptım benim dosyam xls idi kod içinde xlsx silip xls yaptım dosya seçte görünmüyor. Sonra dosyamı xlsx'e dönüştürdüm dosya seç dediğimde gene görünmüyor. Bende ekteki formatta olan 33 dosyayı birleştirmek istiyorum
 

Ekli dosyalar

Katılım
15 Şubat 2021
Mesajlar
52
Excel Vers. ve Dili
Excel 2016/VBA
Altın Üyelik Bitiş Tarihi
17-02-2022
hocam bende de buna benzer bir soru var sizin dediğiniz formülü yaptım benim dosyam xls idi kod içinde xlsx silip xls yaptım dosya seçte görünmüyor. Sonra dosyamı xlsx'e dönüştürdüm dosya seç dediğimde gene görünmüyor. Bende ekteki formatta olan 33 dosyayı birleştirmek istiyorum
Dosya seç kısmında herhangi bir dosya seçimi yapmıyorsunuz.görünmemesi normal. Sadece birleştirilecek xlsx uzantılı dosyaların bulunduğu klasör konumunu seçiyorsunuz. Yazdığım kod o klasör konumundaki xlsx uzantılı bütün dosyaları seçip 1. Sayfasındaki verileri kodu çalıştırdığınız Excel sayfasına alt alta kopyalar.
 
Katılım
15 Şubat 2021
Mesajlar
52
Excel Vers. ve Dili
Excel 2016/VBA
Altın Üyelik Bitiş Tarihi
17-02-2022
hocam bende de buna benzer bir soru var sizin dediğiniz formülü yaptım benim dosyam xls idi kod içinde xlsx silip xls yaptım dosya seçte görünmüyor. Sonra dosyamı xlsx'e dönüştürdüm dosya seç dediğimde gene görünmüyor. Bende ekteki formatta olan 33 dosyayı birleştirmek istiyorum
sizin örneğiniz kodlar şu şekilde olmalıdır. Deneyiniz.
Kod:
Sub merge()
Dim f As String
Dim fl As String
Dim wb As Workbook

With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Birleştirilecek dosyaların olduğu klasörü seçin"
.ButtonName = "Dosya Seç"

    If .Show = 0 Then
    Exit Sub
    Else
    f = .SelectedItems(1) & "\"
    End If
   
fl = Dir(f & "*.xlsx")
Application.ScreenUpdating = False
    Do Until fl = ""
    Set wb = Workbooks.Open(f & fl)
    sat = ThisWorkbook.Sheets(1).Cells(Rows.Count, "A").End(3).Row + 1
    sut = ThisWorkbook.Sheets(1).Cells(2, Columns.Count).End(1).Column
    sat1 = wb.Sheets(1).Cells(Rows.Count, "A").End(3).Row
    sut2 = wb.Sheets(1).Cells(3, Columns.Count).End(1).Column
   
    wb.Sheets(1).Range("a4").resize(sat1 - 3, sut2).Copy
   
    Paste ThisWorkbook.Sheets(1).Range(Cells(sat, 1), Cells(sat, sut))
    wb.Close
    fl = Dir
    Loop
End With
Application.ScreenUpdating = True

End Sub
 
Son düzenleme:

stier_22

Altın Üye
Katılım
15 Eylül 2009
Mesajlar
147
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
04-01-2028
sizin örneğiniz kodlar şu şekilde olmalıdır. Deneyiniz.
Kod:
Sub merge()
Dim f As String
Dim fl As String
Dim wb As Workbook

With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Birleştirilecek dosyaların olduğu klasörü seçin"
.ButtonName = "Dosya Seç"

    If .Show = 0 Then
    Exit Sub
    Else
    f = .SelectedItems(1) & "\"
    End If
  
fl = Dir(f & "*.xlsx")
Application.ScreenUpdating = False
    Do Until fl = ""
    Set wb = Workbooks.Open(f & fl)
    sat = ThisWorkbook.Sheets(1).Cells(Rows.Count, "A").End(3).Row + 1
    sut = ThisWorkbook.Sheets(1).Cells(2, Columns.Count).End(1).Column
    sat1 = wb.Sheets(1).Cells(Rows.Count, "A").End(3).Row
    sut2 = wb.Sheets(1).Cells(3, Columns.Count).End(1).Column
  
    wb.Sheets(1).Range("a4").resize(sat1 - 3, sut2).Copy
  
    Paste ThisWorkbook.Sheets(1).Range(Cells(sat, 1), Cells(sat, sut))
    wb.Close
    fl = Dir
    Loop
End With
Application.ScreenUpdating = True

End Sub
Üstat bu şekilde sadece xlsx dosyamı aldı kodun içine girip xlsx silip xls yaptım ama gene xlsx aldı. Dosya sayım 30 un üzeri olduğu için convert yapamıyorum ücretli üyelik istiyor rica etsem bunu xls olarak formülü revize edebilir miisiniz ya da neresini değiştreyim . Ben şu kısımdaki fl = Dir(f & "*.xlsx") xlsx silip xls yaptım
 
Katılım
21 Mart 2021
Mesajlar
4
Excel Vers. ve Dili
Excel 2016
Hayır. Şu şekilde anlatayım. Siz kodları module içerisine kopyalamışsınız. Kod arayüzünde modül kısmının üstünde yazan sayfa1 e çift tıklayıp sayfa1 içerisine kopyalayınız.
Denedim fakat her iki şekilde de kaydetmeme rağmen (makro içeren ya da içermeyen dosya) işlemi yaptığım boş Excel'de ya da farklı kaydettiğimde herhangi bir değişiklik olmadı. Boş excel olarak karşıma çıktılar.
 
Üst