Dosya Birleştirme

Katılım
25 Nisan 2007
Mesajlar
5
Excel Vers. ve Dili
2007
Merhabalar,

Elimde 400 kadar cvs dosyası var. Bu dosyaların içersinde 1 adet çalışma sayfası yeralmakta ve bu dosyaların A sutununda veriler bulunmakta (Satır sayıları faklı). Her çalışma sayfanın ismi, dosya ismi ile aynı.

Dosyalardaki verileri tek bir çalışma sayfasında alt alta sıralamak istiyorum. Aşağıdaki linkde benzer bir çalışma olmakla beraber, elimdeki dosyalara bu çalışmayı uygulayamadım.

http://www.excel.web.tr/showthread.php?t=46381&highlight=excel4+makrosu

Ekte örnek dosyaların xls'e dönüştürülmüş hali bulunuyor. Yardım edebilirseniz sevinirim.

Teşekkürler.
 
Son düzenleme:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdaki kodu kullanabilirsiniz.

Const dizin="C:\ff\ff\" yazan kısmı, csv dosyalarınızın bulunduğu dizin olarak değiştiriniz.

Kod:
Const dizin = "C:\ff\ff\"
Sub Dosyalari_Birlestir()
Dim con As Object
Dim rs As Object
Dim fso As Object
Dim dzn As Object
Dim dsy As Object
Dim sql As String
Dim i As Integer
Set con = CreateObject("ADODB.connection")
Set rs = CreateObject("ADODB.Recordset")
Set fso = CreateObject("Scripting.FileSystemObject")
Set dzn = fso.getFolder(dizin)
For Each dsy In dzn.Files
    con.ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
                           "Dbq=" & dizin & ";" & _
                           "Extensions=asc,csv,tab,txt;"
    con.Open
    sql = "SELECT * from " & dsy.Name
    rs.Open sql, con, 3, 1
    Range("A" & Cells(65536, 1).End(xlUp).Row).CopyFromRecordset rs
    con.Close
Next
Set rs = Nothing
Set con = Nothing
Set dzn = Nothing
Set fso = Nothing
End Sub
 
Katılım
25 Nisan 2007
Mesajlar
5
Excel Vers. ve Dili
2007
Sayın Pazarçevirdi,

Çok teşekkür ederim. Ellerinize sağlık. Şuan çalıştırmaya çalışıyorum.
 
Katılım
25 Nisan 2007
Mesajlar
5
Excel Vers. ve Dili
2007
Emeğinize sağlık. Fakat anlayamadığım bir sorun var. Kod çalıştırıldıktan sonra, her bir dosyanın açıldığını görebiliyorum. Fakat işlem bittikten sonra, bazı dosyaların listelenmemiş olduğu anlaşılıyor:(

Birleştirilmiş dosyada satır sayısı baya fazla olacak (65000 üzeri), acaba bu durum bir sorun yaratır mı?
 
Son düzenleme:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Dosyaların açıldığını göremezsiniz. Çünkü dosyalar hiç açılmıyor, kapalı haldeyken bilgi alınıyor.

Listelenmeyen dosyalardan bir tane örnek eklermisiniz, buraya (adını ve içeriğini değiştirmeden)

65000'den daha fazlası için tabiki sorun yaratır. 65000'den sonrakilerin nereye yazılmasını istiyorsunuz? Ona göre kodu genişletiriz.
 
Katılım
25 Nisan 2007
Mesajlar
5
Excel Vers. ve Dili
2007
Dosyaların açıldığını görüyorum derken, dosyalardan verilerin taşındığı anlaşılabiliyor demek istemiştim. Kod çalışırken tarihler sırasıyla ana dosyadan izlenebilmekte (sayenizde:).

Bu arada:

Range("A" & Cells(65536, 1).End(xlUp).Row).CopyFromRecordset rs

Satırındaki 65.536 rakamını 1.000.000 olarak değiştirdim, sanırım sorun çözüldü. Yaklaşık 160.000 satır veri tek bir sayfada sıralanabilmekte.

Tekrar teşekkürler.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Eeee, bu da 2007'nin güzelliği işte :) ... 2003 için, "sınıra geldik mi gelmedik mi" diye boyna kontrol etmemiz gerekiyordu ...
 
Üst