• DİKKAT

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

bir klasördeki şablon xls dökümanlarındaki verileri altalta yazdırmak

  • Konbuyu başlatan Konbuyu başlatan sabun
  • Başlangıç tarihi Başlangıç tarihi
Katılım
19 Ekim 2006
Mesajlar
6
Excel Vers. ve Dili
2003 / ENG
Bir klasörde xls dosyaları mevcut. Hepsinde A ve E kolonlarında veriler var, ancak satırlar değişken. Örnek vermek gerekirse:

1. Dosya ismi: office.xls ; A3:E546 arasında veri var.
2. Dosya ismi: network.xls ; A3:E835 arasında veri var.

(toplamda 261 dosya var)

Ben bunları bir dosyaya, yine A:E kolonlarına altalta yazdırmak istiyorum.

ayrıca, F kolonundaki tüm hücrelere de hangi dosyadan alındıklarının yazdırılması mümkün müdür?

şimdiden teşekkürler..

not: Esasında ilk iki satır macro'da silinmese de olur. oluşturulacak dosyada basit bi sort işlemi ile en alta veya en üste alabilirim, sorun değil.
 
Verileri alınacağı dosyaların bulunduğu klasörün adı nedir? veri alınacak sayfa isimleri hep aynımıdır. Bir adet veri alınacak ve alınan dosya örneği eklermisiniz.
 
Merhaba Levent bey,

Ekteki zip dosyasında 3 adet xls dosyası mevcut:

os.beos_username - Örnek veri dosyası 1
date_username - Örnek veri dosyası 2
user_liste - İkisinin birleştirilmesi ile oluşmuş sonuç tablo.

Veri dosyalarının hepsine tek bir sheet var; herbirinin ismi dosya ismi ile aynı.

Tüm veri dosyaları D:/test klasöründe bulunuyor.

Dosyaların içindeki tüm veriler A3:E{değişken} alanlarında bulunuyor.

F kolonunda, satırın hangi dosyadan alındığı yazılıyor.

İlginize teşekkür ederim.
 
Aşağıdaki kodu deneyin. Dosya sayınız ve dosyadaki verileriniz fazla olduğunda işlem süresi uzun olabilir.
Kod:
Sub verial()
For Each dosya In CreateObject("Scripting.FileSystemObject").GetFolder("d:\test\").Files
Set baglanti = CreateObject("ADODB.Connection")
yol = "DRIVER={Microsoft Excel Driver (*.xls)};" & "DBQ=d:\test\" & dosya.Name
baglanti.Open yol
Set rs = baglanti.Execute("[a2:e65536]")
sonsat = [a65536].End(3).Row + 1
Cells(sonsat, "f") = dosya.Name
Cells(sonsat, "a").CopyFromRecordset rs
rs.Close
baglanti.Close
Next
End Sub
 
Elinize sağlık Levent bey, büyük dertten kurtardınız, teşekkürler :)
 
Sayın Menteşeoğlu
uzun bir zamandan beri ihtıyaç duyduğum kodu buldum, denemedim harıka çalışıyor. fakat kendi dosyamın yapımı farklı olduğundan dolayı kendime uygulayamadım. benim faturalar klasörüm içersinde 12 adet sub-klasör vardır, ve her sub.klasörğn içersinde toplam en az 50 adet farklı isimlerden uluşan dosyalar vardır. amacım burdakı dosyaların belirli hücrelerdeki verileri diğer bir sayfaya sıralamaktır, kısacası raporlamak. örnek olarak ekteki dosyayı inceleyebilirsiniz.
yardımlarınız için şimdiden teşekürler
 

Ekli dosyalar

Levent Menteşoğlu'nun yazdığı formülü kullanarak yapmak istediğimin bir kısmını yaptım.
Benim istediğim farklı iki sayfadaki sadece iki veriyi almak.
1. sayfadaki veriyi aldım ama 2. sayfadan alamadım.
Kullandığım kod da aşağıda. Daha kolay bir yolu olabilir belki. Kapalı dosyadaki 1. sayfadaki H52 deki veriyi G4 e; 2.sayfadaki M28 deki veriyi M24 e kopyalamasını istiyorum.
Sub verial()
adi = "D:\TEST\" & Range("L18") & "-" & Range("L19") & ".xls"
For Each dosya In CreateObject("Scripting.FileSystemObject").GetFolder("d:\test\").Files
If dosya = adi Then
Set baglanti = CreateObject("ADODB.Connection")
yol = "DRIVER={Microsoft Excel Driver (*.xls)};" & "DBQ=d:\test\" & dosya.Name
baglanti.Open yol
Set rs = baglanti.Execute("[H51:H52]")
Cells(4, "G").CopyFromRecordset rs
rs.Close
baglanti.Close
End If
Next
End Sub
 
Geri
Üst