• DİKKAT

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

Makro istenilen sayfa da çalışmalı

mrtank50

Altın Üye
Katılım
10 Haziran 2018
Mesajlar
39
Excel Vers. ve Dili
Excel 2021 LTSC Professional Plus 64 bit
Arkadaşlar merhaba çözemediğim bir sorun var nasıl çözebilirim.
Kod hangi sayfadaysam o sayfaya verileri alıyor.
Ben sadece sayfa 3 te otomatik 5 dakikada bir yenilenmesini istiyorum.
Ben sayfa 2'deyken sayfa 3 otomatik 5 dakikada bir yenilenmelidir.

Mümkünatı nasıldır acaba.
Activesheet komutu sadece o sayfada aktifsem çalışıyor.Sayfa 2 deyken malasef çalıştıramadım.

Kodlar aşağıdadır:
Kod:
Sub aralıklı_calıstır()
Application.OnTime Now + TimeValue("00:05:00"), "mynett"
End Sub

Sub mynett()


MsgBox _
"Bugün " & Format(Now, "dd.mm.yyyy") & _
vbCrLf & "Saat " & Format(Now, "hh:mm") & _
vbCrLf & "Günlerden " & b & _
" Veriler aktarıldı"


Dim xmlsayfa As MSXML2.XMLHTTP60
Dim htmldoc As MSHTML.HTMLDocument
Dim table As IHTMLElementCollection
Dim satir  As IHTMLElement
Dim hucre  As IHTMLElement



Range("A2:F" & Rows.Count).ClearContents

Set xmlsayfa = New MSXML2.XMLHTTP60
Set htmldoc = New MSHTML.HTMLDocument

xmlsayfa.Open "GET", "https://finans.mynet.com/borsa/hisseler/", False
xmlsayfa.send

If xmlsayfa.Status <> 200 Then Exit Sub

htmldoc.body.innerHTML = xmlsayfa.responseText

Set table = htmldoc.getElementsByTagName("tbody")

x = 2

For Each satir In table.Item(0).Children
    s = 1
        For Each hucre In satir.Children
          
        If IsNumeric(hucre.innerText) Then
        Cells(x, s) = ("'" & hucre.innerText)
        Cells(x, s) = Cells(x, s) * 1
        Else
        Cells(x, s) = hucre.innerText
        End If
      
        s = s + 1
        Next hucre
x = x + 1
Next satir

Set xmlsayfa = Nothing
Set htmldoc = Nothing
Set table = Nothing
Set satir = Nothing
Set hucre = Nothing

Call aralıklı_calıstır

End Sub
 
Kod içinde geçen Cells ve Range ifadelerinin önüne aşağıdaki gibi sayfa adını eklerseniz sonuç alabilirsiniz.

Örnek;
Range("A2:F" & Rows.Count).ClearContents

Olması gereken;

Sheets("Sayfa3").Range("A2:F" & Rows.Count).ClearContents
 
Kod içinde geçen Cells ve Range ifadelerinin önüne aşağıdaki gibi sayfa adını eklerseniz sonuç alabilirsiniz.

Örnek;
Range("A2:F" & Rows.Count).ClearContents

Olması gereken;

Sheets("Sayfa3").Range("A2:F" & Rows.Count).ClearContents

Hocam çok teşekkür ederim sağolun işe yaradı.
 
Geri
Üst