Webden sayfa kaynak kodu excele nasıl alınır

netzone

Altın Üye
Katılım
10 Mayıs 2006
Mesajlar
789
Excel Vers. ve Dili
🅾🅵🅵🅸🅲🅴
⎝2019 32 Bit 𝙏𝙍⎠
🆆🅸🅽🅳🅾🆆🆂
⎝10 64 Bit 𝙏𝙍⎠
Merhaba,

Öncelikle kaynak kodu görmek için yazdığınız adres Chrome için (Belki diğer bir kaç tarayıcı içinde olabilir.)geçerlidir. Bu yolu kullanarak veri çekmeniz mümkün görünmemektedir. Tabi ki konu hakkında bilgi sahibi arkadaşlarımız makro yardımı ile çekilebilir ise yardımcı olacaklardır.
Fakat onlar sormadan ben sormak isterim, Bu kodların tamamı sizin için önemli mi? yada bu kodları alarak sayfada bir yere erişmek mi istiyorsunuz? bunu öğrenebilirsem farklı bir yöntem de bulunabilir düşüncesindeyim.

İyi çalışmalar.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,225
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
"XMLHTTP" olarak forumda aratın...
 
Katılım
30 Kasım 2010
Mesajlar
95
Excel Vers. ve Dili
2013 TR
ilginiz için teşekkür ederim, aslında amacım sayfadaki sık sık güncellenen bilgileri kendi excel programıma almak,
ancak excelin "veri/dış veri al/web sorgusu" menüsünden bu sayfaya ulaşılamiyor, sanırım sitede java kullanılmış.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,225
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Dış veri özelliği işinize yarıyorsa aşağıdaki kodu bir defaya mahsus çalıştırın. Daha sonra sağ tuş ile "yenile" dersiniz. Otomatik yenileme için kod satırında belirttiğim yere dakika cinsinden değer verebilirsiniz...

PHP:
Sub Test()

    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;https://www.bloomberght.com/finansal-teknoloji", Destination:=Range("$A$1"))
        .Name = "Zeki Gürsoy"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        
        'Otomatik güncelleme için aşağıdaki satıra dakika
        'cinsinden değer yazın...
        .RefreshPeriod = 0
        
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub
 

netzone

Altın Üye
Katılım
10 Mayıs 2006
Mesajlar
789
Excel Vers. ve Dili
🅾🅵🅵🅸🅲🅴
⎝2019 32 Bit 𝙏𝙍⎠
🆆🅸🅽🅳🅾🆆🆂
⎝10 64 Bit 𝙏𝙍⎠
Office 2019 64 Bit 'de herhangi bir hata almadan kodlar çalıştı, biçimlendirme, resim, bağlantılar v.s. olmadan metin halinde sayfama geldi.
Bilginize.
 
Katılım
30 Kasım 2010
Mesajlar
95
Excel Vers. ve Dili
2013 TR
ilgi ve emeğiniz için sağolun, 2003 excel bu konu için yeterli değil demek ki,
başka bir yol bulmam gerekecek, tekrar teşekkürler....
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,270
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Office 2010 (32 Bit) ile de sıkıntı yok ....

.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,270
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Yavuz Bey; muhtemelen söz konusu sayfadaki "Piyasa Özet" başlığı altındaki verileri almak istiyorsunuz.

Eğer amacınız buysa, aşağıdaki kod bu verileri sayfaya aktaracaktır ...

Kod:
Sub GetData()
    ' Haluk - 08/08/2018
    '
    Dim HTTP As Object, HTML As Object
    Dim URL As String
    Dim noRows As Byte, noColumns As Byte
    Dim i As Byte, j As Byte
    Dim Table As Object, Tables As Object, myTable As Object
   
    Range("B1:D" & Rows.Count) = Empty
   
    URL = "https://www.bloomberght.com/finansal-teknoloji"
   
    Set HTTP = CreateObject("MSXML2.ServerXMLHTTP")
    Set HTML = CreateObject("HTMLFILE")
   
    HTTP.Open "GET", URL, False
    HTTP.send
   
    If HTTP.Status = 200 Then
        HTML.body.innerhtml = HTTP.responseText
       
        Set Tables = HTML.getElementsByTagName("table")
        If Tables.Length > 0 Then
            i = 0
            For Each Table In Tables
                If Table.className = "table table-striped" Then
                    Set myTable = Tables(i)
                End If
                i = i + 1
            Next
           
            noRows = myTable.Rows.Length
            noColumns = myTable.Rows(4).Cells.Length
           
            On Error Resume Next
           
            For i = 1 To noRows
                For j = 2 To noColumns + 1
                    Temp = Replace(myTable.Rows(i - 1).Cells(j - 2).innerText, ".", "")
                    Cells(i, j) = Replace(Temp, ",", ".")
                    Temp = ""
                Next
            Next
        End If
    End If
    
    Range("C4:D10").NumberFormat = "0.0000"
    Set Tables = Nothing
    Set HTML = Nothing
    Set HTTP = Nothing
End Sub
 
Son düzenleme:
Katılım
30 Kasım 2010
Mesajlar
95
Excel Vers. ve Dili
2013 TR
Haluk üstad ferasetinize hayran kaldım, çok teşekkür ederim, olay çözülmüştür sayenizde...
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,270
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Bu arada Zeki Beyin önerdiği alternatifin sizde çalışmadığını belirtmiştiniz ama, konuyu izleyen/okuyan diğer üyeler için ufak bir bilgi vermek istedim.

Zeki Beyin alternatifinde;

Rich (BB code):
.WebSelectionType = xlEntirePage
satırındaki kırmızı ifade ile tüm sayfa aktarılmaktadır.

Siz yukarıdaki mesajlarda; sadece sayfadaki söz konusu "Piyasa Özet" başlığı altındaki tabloyu almak istediğinize göre ve sayfa kodlarına göre bu tablonun index değeri 1 olduğu için, yukarıda belirttiğim satır silinip, onun yerine aşağıdakiler yazıldığında, sadece istenilen tablo sayfaya aktarılır.

Kod:
        .WebSelectionType = xlSpecifiedTables
        .WebTables = "1"
.
 

netzone

Altın Üye
Katılım
10 Mayıs 2006
Mesajlar
789
Excel Vers. ve Dili
🅾🅵🅵🅸🅲🅴
⎝2019 32 Bit 𝙏𝙍⎠
🆆🅸🅽🅳🅾🆆🆂
⎝10 64 Bit 𝙏𝙍⎠
Merhaba,

Haluk Bey'in de belirttiği gibi sadece Piyasa özetini almak ise amacımız. Söz konusu işlemi Webden Al > adres yazıldıktan sonra gelen ekrandan Table 0'ı seçin ve sayfaya ekleyin. [Yenileme sıklığını değiştirmek için Veri > Sorgular ve Bağlantılar > Bağlantı/Sorgu Özellikleri açılan ekrandan ayarlayabilirsiniz.]

Örnek dosya ektedir.
İyi çalışmalar.
 

Ekli dosyalar

Katılım
30 Kasım 2010
Mesajlar
95
Excel Vers. ve Dili
2013 TR
Sayın netzone,
örnek dosyanızı merak ettim ama, malum sebepten dolayı indiremiyorum,
başka bir aracıya yükleyebilirmisiniz?
teşekkürler....
 
Katılım
30 Kasım 2010
Mesajlar
95
Excel Vers. ve Dili
2013 TR
Sayın Haluk Bey,
Zeki Bey'in önerdiği alternatifte "otomatik güncelleme" özelliği dikkatimi çektiği için, sizin 12.mesajda söz ettiğiniz değişikliği yapıp
tekrar denedim ama maalesef bende yine aynı hata kodunu veriyor,
Böyle bir özelliği sizin kodda nasıl bir değişiklikle elde edebiliriz acaba,
(sıkıntı olacaksa önemli değil zamanınızı almak istemem...kod bu haliylede iş görüyor)
 

netzone

Altın Üye
Katılım
10 Mayıs 2006
Mesajlar
789
Excel Vers. ve Dili
🅾🅵🅵🅸🅲🅴
⎝2019 32 Bit 𝙏𝙍⎠
🆆🅸🅽🅳🅾🆆🆂
⎝10 64 Bit 𝙏𝙍⎠
Buyurun, Dış bağlantıdan indirmek için DOSYANIZ
 
Katılım
30 Kasım 2010
Mesajlar
95
Excel Vers. ve Dili
2013 TR
Sayın @netzone,
teşekkürler ama sizin çözümünüz ile excel 2003 de maalesef sonuç alamıyoruz,
Webden Al > adres yazıldıktan sonra gelen ekranda, siteye girilemediği rapor ediliyor....
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,270
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Sayın Haluk Bey,
Zeki Bey'in önerdiği alternatifte "otomatik güncelleme" özelliği dikkatimi çektiği için, sizin 12.mesajda söz ettiğiniz değişikliği yapıp
tekrar denedim ama maalesef bende yine aynı hata kodunu veriyor,
Böyle bir özelliği sizin kodda nasıl bir değişiklikle elde edebiliriz acaba,
(sıkıntı olacaksa önemli değil zamanınızı almak istemem...kod bu haliylede iş görüyor)
Koda bir "Timer" ekleyerek yapılır ama o tür kodlar başka sorunlara yol açabilir ..... İhtiyacınız olduğunda butona tıklayarak güncellemeniz, en iyisi.

.
 
Üst