WEBDEN VERİ ALMA

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Aşağıdaki kodu kullanabilirsiniz.
Kod uzamasın diye başlıkları almadım, onları siz ekleyin.
Veriler ikinci satırdan itibaren gelecektir. Sütunları bir defaya mahsus biçimlendirmek gerekir.
Değişim okları gelmediği için arada bir sütun boş görünecek. İlerde resimlerde getirilebilir.

Kod:
Sub mynett()

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

End Sub
 
Son düzenleme:
Katılım
21 Haziran 2021
Mesajlar
64
Excel Vers. ve Dili
türkçe
Altın Üyelik Bitiş Tarihi
20-07-2023
Aşağıdaki kodu kullanabilirsiniz.
Kod uzamasın diye başlıkları aldım onları siz ekleyin.
Veriler ikinci satırdan itibaren gelecektir. Sütunları bir defaya mahsus biçimlendirmek gerekir.
Değişim okları gelmediği için arada bir sütun boş görünecek. İlerde resimlerde getirilebilir.

Kod:
Sub mynett()

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

End Sub
 

Ekli dosyalar

Katılım
21 Haziran 2021
Mesajlar
64
Excel Vers. ve Dili
türkçe
Altın Üyelik Bitiş Tarihi
20-07-2023
Erdem bey hata verdi. SİTE AÇIKKEN MAKROYU BUTONA ATADIM
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Sarı ile işaretli nesneleri vba ekranında Tools>References 'tan ekleyin.

240558
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bu işlemi alternatif olarak, Excel'in "Verileri Al" ya da "Dış Veri Al" özelliği ile makro kullanmadan da yapabilirsiniz.

240566

240567
 
Son düzenleme:

ibere

Altın Üye
Katılım
31 Mart 2018
Mesajlar
129
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
21-04-2027
Aşağıdaki kodu kullanabilirsiniz.
Kod uzamasın diye başlıkları aldım onları siz ekleyin.
Veriler ikinci satırdan itibaren gelecektir. Sütunları bir defaya mahsus biçimlendirmek gerekir.
Değişim okları gelmediği için arada bir sütun boş görünecek. İlerde resimlerde getirilebilir.

Kod:
Sub mynett()

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

End Sub
hocam xmlhttp kodu yazabilmek adına yardımcı kaynak önerebilir misiniz ?
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
hocam xmlhttp kodu yazabilmek adına yardımcı kaynak önerebilir misiniz ?
Yardımcı kaynak excel.web.tr diyebilirim. Sitedeki örnekleri inceleyin.
Xmlhttp nesnesi ile çalışırken sunucudan GET yöntemi ile bilgi istemek çok zor değil.
Önemli olan html yapısını anlamak, sunucudan özelleştirilmiş bilgi istenmediği sürece rahatlıkla yapılabiliyor.
İleri seviyede uzmanlaşmak isterseniz özel ders almanızı öneririm.
 

ibere

Altın Üye
Katılım
31 Mart 2018
Mesajlar
129
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
21-04-2027
Yardımcı kaynak excel.web.tr diyebilirim. Sitedeki örnekleri inceleyin.
Xmlhttp nesnesi ile çalışırken sunucudan GET yöntemi ile bilgi istemek çok zor değil.
Önemli olan html yapısını anlamak, sunucudan özelleştirilmiş bilgi istenmediği sürece rahatlıkla yapılabiliyor.
İleri seviyede uzmanlaşmak isterseniz özel ders almanızı öneririm.
Boş vaktiniz olurda ado eğitimi gibi xmlhttp eğitim videoları çekerseniz birçok insana fayda sağlayacağını düşünüyorum. Ayrıca ado eğitiminiz için teşekkür ederim, ilgili eğitiminizden çok şey öğrendim.

Saygılarımla..
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Xmlhttp eğitimi verecek kadar konuya hakim değilim.
Aşağıdaki videoyu fikir vermesi açısından izleyebilirsiniz.

 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
263
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
Aşağıdaki kodu kullanabilirsiniz.
Kod uzamasın diye başlıkları almadım, onları siz ekleyin.
Veriler ikinci satırdan itibaren gelecektir. Sütunları bir defaya mahsus biçimlendirmek gerekir.
Değişim okları gelmediği için arada bir sütun boş görünecek. İlerde resimlerde getirilebilir.

Kod:
Sub mynett()

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

End Sub
Erdem Hocam Merhaba
Makro ile veriyi mi almak yoksa Excelin "Verileri Al" yaparak mı almak daha hızlı sonuç verir
Örneğin bu sayfadaki veriler
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
263
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
Merhaba

Testi yaptım, karşılaştırılamayacak kadar bu yöntem hızlı sonuç verdi
Farklı etkileri olabilir, onları da karşılaşınca yazarım
 
Üst