• DİKKAT

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

Web sayfası yüklenmesini bekleme

  • Konbuyu başlatan Konbuyu başlatan askm
  • Başlangıç tarihi Başlangıç tarihi

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,746
Excel Vers. ve Dili
2010-2016
Kolay gelsin. Web sayfasından veri çekerken do events ile bazen sayfa yüklenmiyor. İnternet hızına yada bilgisayar hızına göre saniye olarak bekleme yapıyoruz. Bunun yerine döngü olsa sayfanın yüklenip yüklenmedigini kontrol etse. Eğer yüklendi ise döngüden çıksa yüklenmedi ise devam etse. Bu mümkün mü? Yani sayfanın yüklenip yuklenmedigini kontrol etme imkanı var mı?
 
Merhaba,
Ben şu satırları kullanıyorum:
PHP:
Do While Not IE.readyState = 4: DoEvents: Loop
Do While IE.busy: DoEvents: Loop
 
Örneğin aşağıdaki kodlarda Application.Wait (Now + TimeValue("0:00:01")) satırının başındaki tek tırnağı kaldırırsam hata vermiyor. Ama kaldırmazsam hata veriyor. Sayfa yüklenmiş gibi ama içerisindeki bileşenler tam yüklenmiyor sanırım.
Bazı sitelerde ise bu 1 sn değerini 2-3 e de çıkartabiliyoruz. Veya bilgisayar ya da internet hızına göre artırabiliyoruz.

Kod:
Sub kurgetir()
  Set IE = CreateObject("InternetExplorer.Application")
  IE.navigate "https://www.tcmb.gov.tr/wps/wcm/connect/tr/tcmb+tr/main+page+site+area/bugun"
  Do While Not IE.readyState = 4: DoEvents: Loop
  Do While IE.busy: DoEvents: Loop
'  Application.Wait (Now + TimeValue("0:00:01"))
  Kuralis = IE.Document.getElementsByClassName("deger")(2).innerText
  Kursatis = IE.Document.getElementsByClassName("deger")(1).innerText
  ActiveSheet.Range("W6").Value = Kuralis
  ActiveSheet.Range("X6").Value = Kursatis
End Sub
 
Örnek olarak verdiğiniz TCMB'nin URL'ini kullanırsak; aşağıdaki gibi bir kod kullanılabilir... Bu şekilde Application.Wait kullanmaya gerek kalmaz.

Kod:
Sub Test()
    'Haluk - 17/02/2019
    'E-Posta: sa4truss@gmail.com
    '
    Dim IE As Object
    
    Set IE = CreateObject("InternetExplorer.Application")
    IE.navigate "https://www.tcmb.gov.tr/wps/wcm/connect/tr/tcmb+tr/main+page+site+area/bugun"
    
    Do While Not IE.readyState = 4
        DoEvents
    Loop
    
    Do
        If IE.Document.getElementsByClassName("deger").Length > 0 Then Exit Do
    Loop
    
    KurAlis = IE.Document.getElementsByClassName("deger")(2).innerText
    KurSatis = IE.Document.getElementsByClassName("deger")(1).innerText
    MsgBox "KurAlis = " & KurAlis & vbCrLf & vbCrLf & "KurSatis =" & KurSatis
    
    Set IE = Nothing
End Sub

.
 
Haluk Bey teşekkürler.
 
Geri
Üst