• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Soru VBA ADO SQL ile Kapalı Dosyadan Veri Alma (Hızlı Konsolidasyon)

alican241

Yeni Üye
Aktivite

0%

Katılım
31 Ağu 2026
Mesajlar
3
Aldığı beğeni
0
Excel V
Office 2019 TR
Konu Sahibi
Windows 10 Google Chrome 152
Herkese merhaba, forumunuza yeni üye oldum. Değerli paylaşımlarınız için şimdiden teşekkür ederim.
Şirket bünyesinde her gün aynı formatta (ancak satır sayıları değişken) yaklaşık 50-60 farklı Excel dosyasından veri topluyorum. Mevcut Workbooks.Open yöntemi arka planda dosyaları tek tek açtığı için inanılmaz bir performans kaybına ve donmalara yol açıyor.
Araştırmalarım sonucunda en hızlı yöntemin ADO (ActiveX Data Objects) ve SQL mimarisi olduğunu öğrendim ancak döngüyü kurarken "Provider" ve "Connection" nesnelerinde sürekli hata (Runtime Error) alıyorum.
Yapmak istediğim tam olarak şu:
  1. Makro içeren ana dosyamın yanındaki "Raporlar" klasörünün içindeki tüm .xlsx dosyalarını tarayacak.
  2. Her dosyanın "Sayfa1" isimli sayfasındaki A2:G aralığındaki verileri (Başlıksız olarak) çekecek.
  3. Çekilen bu verileri ana dosyamdaki "Konsolide" sayfasına alt alta, veri kaybı olmadan ve dosyaları görsel olarak açmadan (kapalıyken) çok hızlı bir şekilde aktaracak.
Örnek şablon dosyamı ekte paylaşıyorum. Kod blokları konusunda destek olabilecek veya mantığı kurmamda yol gösterecek ileri düzey VBA uzmanı hocalarımın yardımını rica ederim.
Saygılarımla, iyi forumlar.
 

Ekli dosyalar

Windows 10 Google Chrome 152
Merhaba,

Excelin yerleşik özelliklerinden Klasördeki Dosyaları Birleştir işlevi işinizi kolaylaştırabilir. Denemenizi öneririm.

Klasöre bağlantı kurduğu için yeni bir dosya geldiğinde YENİLE dediğinizde verileri dinamik olarak hızlı şekilde güncelleyecektir.
 
Konu Sahibi
Windows 10 Google Chrome 152
Korhan AYHAN, Hocam harikasın, tam aradığım alternatif buydu işte
Aslında ADO/SQL kodlarıyla boğuşurken Power Query (Veri > Verileri Al > Dosyadan > Klasörden) yöntemi hiç aklıma gelmemişti. Sırf kod hatalarını çözmek için saatlerimi harcayacaktım. Bahsettiğin gibi yerleşik bir özellik kullanmak hem makro bağımlılığını azaltacak hem de her yeni dosya eklendiğinde tek tuşla "Yenile" demek işimi acayip hızlandıracak.
Fakat yine de merakımdan ve arşivimde bulunması açısından soruyorum; eğer bu klasördeki dosya birleştirme sihirbazı yerine illa ki VBA mimarisiyle (örneğin CreateObject("ADODB.Connection") üzerinden) gitmek isteseydik, aldığım o bağlantı (Provider) hatasını aşmak için örnek bir döngü kodu paylaşabilir miydin? En azından ADO mantığını da kavramış olurdum.
Değerli yönlendirmen ve hızlı cevabın için çok teşekkürler, emeğine sağlık
 
Geri
Üst