Selamlar herkese, forumda yeniyim. Şirkette bir ana havuz dosyam var. Her gün farklı departmanlardan gelen 15-20 adet kapalı Excel dosyasındaki verileri bu ana dosyada birleştirmek (konsolide etmek) zorundayım.Şu an klasik Workbooks.Open yöntemiyle dosyaları tek tek arka planda açıp, veriyi kopyalayıp kapatan bir makro döngüsü kullanıyorum. Fakat dosyaların her biri yaklaşık 50'şer bin satır olduğu için makronun çalışması bazen 4-5 dakika sürüyor, işlem esnasında Excel tamamen kilitleniyor ve yanıt vermiyor moduna düşüyor.Dosyaları hiç açmadan, arka planda ADO ve SQL (Select * From...) bağlantısı kurarak bu verileri ana dosyama saniyeler içinde çekmenin bir yolu var mıdır? Kod yapısını bir türlü oturtamadım, bağlantı (Connection string) sürekli hata veriyor. Örnek taslak dosyamı ekliyorum, VBA mimarisinde uzman hocalarımızın desteğini bekliyorum.
Şimdiden çok teşekkürler.
Merhaba.
Doğru yönlendirmek adın birkaç sorum olacak.
1-) He dosyada ellişerbin satır var demişsiniz. Bu dosyalar her gün farklı verilerle mi hazırlanıyor yoksa, aynı dosyaya ilaveler yapılarak mı ilerliyor.
2-) Bu dosyalardaki veriler manuel mi giriliyor yoksa hali hazırda kullanılan bir program varda oradan döküm alınarak mı hazırlanıyor.
İlk sorumun cevabına göre şöyle bir kurgu kurulabilir, aktarılan verinin tekrar aktarılmaması değerlendirile bilir, böylelikle aynı veriler sürekli aktarılmaktansa önceden aktarılanlar yerine yeni eklenenler aktarılır böylelikle işlem süresi kısalabilir.
Hali hazırda bir programdan döküm alınıyorsa zaten veriler bir veri tabanında var demektir, oradan direk çekilebilir.
Excel dosyaları, önce SQL gibi bir veri tabanına aktarılır, orada eğer analiz yada gruplama gibi işlemler yapılacaksa, veri tabanı üzerinde Her zaman hazır tablo halinde bulunan bir view tablo kurgulanır ve bu tablo direk excele aktarılır yine süreç kısalabilir.
Büyük datalarda çözüm yolu çok, önce mevcut durumu işlem tekrarlarını önlemek için iyi değerlendirmek gerekir.
Şunu da unutmamak gerekir, " Alet işler el övünür." Bilgisayarın gücüne ve işlem anındaki durumuna göre süreler değişecektir. Çoğu hızlı çalışan kodlar Ram da geçicide olsa bir alan kapladığı için çok büyük datalarda illaki bir yavaşlama olacaktır, bu nedenle donanım da önemli.
Geri dönüşünüze göre çözümler üretebiliriz.
İyi çalışmalar.