• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Dosya Birleştirme

  • Konbuyu başlatan Konbuyu başlatan avaca
  • Başlangıç tarihi Başlangıç tarihi
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:
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
 
Sayın Pazarçevirdi,

Çok teşekkür ederim. Ellerinize sağlık. Şuan çalıştırmaya çalışıyorum.
 
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:
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.
 
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.
 
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 ...
 
Geri
Üst