• DİKKAT

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

Değere göre veri yenileme

Katılım
19 Şubat 2013
Mesajlar
4
Excel Vers. ve Dili
2010
Merhaba,
Bir çalışma kitabım var ve yaklaşık 100 ayrı sheet mevcut bu sheetlerin her biri webden farklı sayfalardan veri almakta.

Fakat tümünü yenile dediğim zaman bu çok uzun vakit alıyor. Ben ana sheette hücredeki değer 0 dan büyük ise ilgili sheetteki veriyi yenilemesini istiyorum.
Bu mümkünmüdür.
Teşekkürler.
 
Fikir vermesi için aşağıdaki koddan yararlanabilirsiniz.
Örnek:
Sayfalarda sorguların üzerinde sağ tıklayın "Veri Aralığı Özellikleri" ni seçin, çıkan iletişim kutusunda, "Yenileme Denetimi" ndeki onayları kaldırın. Siz makroyu çalıştırmadıkça sorgu yenilenmeyecektir.
Sayfa4 de A1 hücresinden başlayan bir Web Sorgusu varsa, "ana sheette" A1 hücresinde Sayfa4 yazıyor, B1 hücresinde ise 0 dan büyük bir değer varsa, makro çalıştırılınca, sadece Sayfa 4'deki sorguyu yeniler.
Kod:
Sub Makro3()
If Sheets("Ana").Range("B1") > 0 Then
Sayfa = Sheets("Ana").Range("A1")
    Sheets(Sayfa).Range("A1").QueryTable.Refresh BackgroundQuery:=False
    End If
End Sub
 
Son düzenleme:
Ali Bey merhaba,
Yanıtınız için çok teşekkürler çalışacak gibi ilk testlerde sorun çıkmadı.
Peki makroyu her bir satır için tek tek tanımlamak yerine sütundaki değerleri kontrol etmesi için ayarlayabilirmiyim. Bu şekilde onlarca dosya var ve 1000 den fazla sütuna tanımlama yapmam gerekecek sanırım.

Yoksa

Sub yenile()
If Sheets("Ana").Range("J2") > 0 Then
Sayfa = Sheets("Ana").Range("D2")
Sheets(Sayfa).Range("D2").QueryTable.Refresh BackgroundQuery:=False
End If
If Sheets("Ana").Range("J3") > 0 Then
Sayfa = Sheets("Ana").Range("D3")
Sheets(Sayfa).Range("D3").QueryTable.Refresh BackgroundQuery:=False
End If
End Sub

şeklindemi devam etmem gerekli.
 
Ben bir fikir vermesi açısından örnek vermiştim.
O kadar uzatmaya gerek yok, değişik çözümler olabilir ama dosya.tc gibi bir dosya paylaşım sitesine örnek dosya (Özellikle "ana sheet" yapısı için) ekleyip, link'ni bildirirseniz, yukardaki kodlara üç beş satır daha eklenerek, kesin bir çözüm ürete bilinir.
Örnek Çözüm1
Anasayfa'da J sütununda herhangi bir hücre aktif (seçili) ise ve o hücre 0 dan büyük ise O hücrenin satırında D sütundaki hücrede yazılı sayfasındaki A1 hücresinden başlayan Web sorgusunu yeniler.
Kod:
Sub yenile()
If ActiveCell.Column = 10 Then
 If ActiveCell > 0 Then
 Sayfa = ActiveCell.Offset(0, -6)
 Sheets(Sayfa).Range("A1").QueryTable.Refresh BackgroundQuery:=False
 End If
 End If
End Sub
 
Son düzenleme:
Eğer Teker teker yenilemek isterseniz #4 deki kodu kullanın. Döngüye sokup J sütunundakileri kontrol edip sıfırdan büyükleri yenileyecekseniz, aşağıdaki kodu kullanın.
Kod:
Sub yenile()
say = Sheets("Ana").Range("a65536").End(3).Row
For i = 2 To say
If Range("J" & i) > 0 Then
 Sayfa = Range("D" & i)
 Sheets(Sayfa).Range("A1").QueryTable.Refresh BackgroundQuery:=False
 End If
Next
End Sub
 
Son düzenleme:
Ali Bey merhaba,
Sanırım son gönderdiğiniz kod aradığım çözüm.
Fakat ikinci satırda hata almaktayım.
Teşekkürler.
 
Kusura bakmayın bir hata yapmışım. Yukardaki (#5 mesajdaki) kodları düzelttim.
 
Ali Bey çok teşekkürler bu oldu.
 
Geri
Üst