• DİKKAT

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

Makro hakkında iyileştirmeler.

Katılım
13 Eylül 2005
Mesajlar
78
Merhaba,


Ekli dosyada her "GENEL" sayfası hariç, her sayfadaki aktar butonuna bastığımda ilgili makro çalışıyor ve aynı dizinde bulunan dosyalardan belirtilen şartlara uygun şekilde verileri alıyor. Benim yapmak istediğim ilk olarak bu botunları "genel" sayfasındaki tek bir botunun altına toplamak yani her sayfadaki botunlara ayrı ayrı basmak yerine tek bir butondan kontrol etmek. ikinci olarakta aynı dizindeki dosyalardan veri çekerken bu işlemin çok yavaş olması sorunu. şuan için örnekte 4 dosyadan veri almakta o yüzden yavaş olmuyor fakat bu sayı 100 e çıktığında 1 sayfanın verilenin alınması yaklaşık 3 dk sürüyor. Bu konularda yardımlarınızı bekliyorum.

Teşekkürler,
 

Ekli dosyalar

benim kapalı dosyalardan veri çekme yöntemim mi yanlış o yüzden mi işlem bu kadar uzun sürmekte ?
 
kaynak Dosyalarınız veri tabanı şartlarına uyan bir yapıda olsa ado ile daha hızlı bir şekilde veriler alınabilir.Ama bu yapısı ile dosyalarınız excel4 makro ile veri almaya uygun.
Veri tabanı mantığında olsa idi birleştirilmiş hücre olmaması lazımdı.Sütun başlıkları olmalı ve yan yana olmalıydı.Sütün başlıkları en üst satırda olmalıydı.Arasında boşuk olmamalı ve türkçe karakterler (sütun başlıkları için) olmamlıydı.
Gördüğünüz gibi bir veriyi önce bu mantıkla lamalı daha sonra onu formülle veya makro ile istediğimiz kalıba sokabiliriz.Ama sizde haklısınız,eğer o şekilde kullanmak isteseydim access kullanırdım diyeceksiniz.Ne yapalım,şu anda yapılacak bir şey yok.veri aldığınız sütunlardaki en son satırı bulrak(Counta) boş olan sayfalarda fazla oyalanmadan işi bir miktar daha kısaltabilirisniz.:cool:
 
Peki şuanda ben her butona bastığımda ilgili sayfa için verileri tekrar alıyorum. yani dizine bir dosya eklediğimde tekrar butona basıyorum ve kayıtlar yeniden listeleniyor. Veri aldığım dosya isimleri tarih bilgisi içeriyor ve buna göre alıyorum. her gün için dizine 2 dosya eklediğimi düşünürsek, bu işlem için sadece yeni eklenen bu iki dosyayı listeye eklememin bir yolu var mı acaba ?

örneğin;
Eğer liste boşsa dosyaların hepsini al, listede kayıt varsa sadece tarihi bugün (tgk200911101.xls,tgk200911102.xls) olan kayıtları al yapabilirmiyiz.
 
Peki şuanda ben her butona bastığımda ilgili sayfa için verileri tekrar alıyorum. yani dizine bir dosya eklediğimde tekrar butona basıyorum ve kayıtlar yeniden listeleniyor. Veri aldığım dosya isimleri tarih bilgisi içeriyor ve buna göre alıyorum. her gün için dizine 2 dosya eklediğimi düşünürsek, bu işlem için sadece yeni eklenen bu iki dosyayı listeye eklememin bir yolu var mı acaba ?

örneğin;
Eğer liste boşsa dosyaların hepsini al, listede kayıt varsa sadece tarihi bugün (tgk200911101.xls,tgk200911102.xls) olan kayıtları al yapabilirmiyiz.
O zaman Kayıt yapılmadan 1 gün geçilirse ne olacak.Siz diyelim bu gün 2 dosya attınız klasöre fakat onları kaydetmediniz.Biz kodlarımızda sadece bu günkü dosyaları sorguladığımız zaman onlar bir gün ardan geçtikten sonra sayfaya eklenmeyecek.
Onun yerine onları o klasör içinde başka bir klasör oluşturup o klasöre taşımalı kodlar o klasörün içindeki verileri alıp sayfalara kaydeder.sonrada o dosyaları öteki dosyaların bulunduğu klasöre taşır.
Yada başka klasöe yapmadan bir userform oluşturalım birde listbox yapalım sizin oradan çoklu seçim yaptıklarınızı sayfaya atalım.
Benim aklıma gelen bunlar.
 
benim dosyamda 14 sayfa var yani 14 kez botuna basmam gerekiyor, bunu bir şekilde tek butona düşürebilirsek, listbox 'tan seçip bunları al demek çok mantıklı olacak diye düşünüyorum. böylece ilk sefer yani bütün verileri al dediğimiz komuttan sonraki işlemlerin, listboxdan seçilerek yapılacağı için çok hızlı yürüyeceğini düşünüyorum.
 
benim dosyamda 14 sayfa var yani 14 kez botuna basmam gerekiyor, bunu bir şekilde tek butona düşürebilirsek, listbox 'tan seçip bunları al demek çok mantıklı olacak diye düşünüyorum. böylece ilk sefer yani bütün verileri al dediğimiz komuttan sonraki işlemlerin, listboxdan seçilerek yapılacağı için çok hızlı yürüyeceğini düşünüyorum.
Tabii birde bu var.Tek butonla bütün sayfalara verileri alayım demişsiniz.
Hani veriler hangi sayfaya alınacak.Bunuda bilmek gerekiyor.Bir veri bu 14 sayfanın hepsinemi alınacak.Yoksa bir ölçütmü var.Şu veri şu sayfaya ,bu veri bu sayfaya gibisinden.
 
örnek dosyada olduğu gibi veriler, o sayfanın a1 hücresine veya sayfa adına bakılarak o sayfaya ait olan veriler alınıyor. Örneğin; "ALKA" sayfasına, veriyi okuduğumuz diğer dosyalardaki "ALKA" satırındaki bilgiler ve her sayfaya "XU100" satırındaki bilgiler alınıyor.

En son olarak ben bu sayfalara aldığım bilgileri aşağıdaki makro ile "GENEL" sayfasındaki yerlerine alıyorum.






Private Sub CommandButton1_Click()
Dim S1 As Worksheet, X As Integer, Sütun As Byte

Set S1 = Sheets("GENEL")
Sütun = 7

S1.Select

Range("A3:CN65536").ClearContents
Range("A3:B65536").Value = Sheets(2).Range("A3:B65536").Value
Range("C3:F65536").Value = Sheets(2).Range("I3:L65536").Value
For X = 2 To Sheets.Count
Sheets(X).Range("C3:H" & Sheets(X).Range("A65536").End(3).Row).Copy S1.Cells(3, Sütun)
Sütun = Sütun + 6
Next

Set S1 = Nothing

MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Örneğin; "ALKA" sayfasına, veriyi okuduğumuz diğer dosyalardaki "ALKA" satırındaki bilgiler ve her sayfaya "XU100" satırındaki bilgiler alınıyor.
ALKA satırı Hangi sütunda tutuluyor.D sütununda Kod diye sütun başlığı attğınız yerdemi tutulıuyor.
Eğer öyleyse orada ana dosyada olmayan sayfaların ismide var.onlar ne olacak?.
Mesela ban yoladığınız tgk200909092.xls dosyasında D7 sütununda ACIBD diye bir veri var .Ama ana dostyanızda böyle bir sayfa yok.:cool:
Ayrıva XU100 satırı nedir?
XU sütun adı ve 100 de satır numarasımıdır.
Eğer öyleyse ben 2003 kullanıyorum.Bende XU sütunu yok.Enfazla IV sütunu var.
 
evet ALKA satırı D sutününda tutuluyor.Ben sadece ana dosyamda olan satırları çekiyorum zaten ana dosyamda sadece çekmek istediğim sayfalar var. "XU100" ise oda aynı alka gibi D sutününda yer alıyor. Ana dosyalardaki sayfalara bakarsanız örneğin ALKA sayfasında ALKA' nın bilgileri "KAĞIT" başlığı altına çekiliyor."XU100" satırının bilgileri ise BORSA başlığı altına çekiliyor.
Diğer sayfalarda da aynı şekilde veri okunuyor.Sadece sayfa olarak açtığım satırların bilgilerini alıyorum.
 
Geri
Üst