Soru Web Sayfasındaki Tab'den Veri Çekme

Katılım
8 Nisan 2015
Mesajlar
59
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
18-08-2022
Merhabalar,

Bir dinamik bir tablosu bulunan bir url'deki (örn:http://www.bestatistic.com/gol-istatistikleri.html) tab'lerden nasıl veri çekebilirim.

Buradaki temel sorun tab'e tıklayınca linkin değişmemesi, dolayısıyla verileri IE.navigate ile görememek. VBA ile istediğim Tab'e tıklamanın veya tıklamadan içindeki verileri çekmenin bir yolu var mıdır?

İlgilenenlere şimdiden teşekkür ederim.
 
Katılım
8 Nisan 2015
Mesajlar
59
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
18-08-2022
Konu güncel.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,873
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bu dosyada Sayfa1 deki komut düğmesine tıklanarak ilgili sitedeki liglere ait bilgiler gelmekte
Sayfa1 deki B sutünuna iki kere hızlıca tıklayınca ilgili lig yazısı Sayfa2 ye A1 hücresine gelmekte ve Sayfa2 ye gitmekte
Sayfa2 deki komut düğmesine tıklayınca istenen veriler gelmektedir.

Sayfa1 deki kodlar

Kod:
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Sub CommandButton1_Click()
Dim URL As String

Dim IE As Object

Range("A2:ıv5000").ClearContents

URL = "http://www.bestatistic.com/gol-istatistikleri.html"


Set IE = CreateObject("InternetExplorer.Application")
sat = 2

With IE
.Navigate URL
.Visible = 1
ShowWindow IE.hwnd, 2

Do Until IE.ReadyState = 4: DoEvents: Loop
Do While IE.Busy: DoEvents: Loop



Set ElementCol = IE.Document.getElementsByTagName("a")
For Each link In ElementCol
sat1 = sat1 + 1

If sat1 = 13 Then GoTo atla
If sat1 = 14 Then GoTo atla
If sat1 = 15 Then GoTo atla
If sat1 = 16 Then GoTo atla

If sat1 > 9 Then
Cells(sat, 1) = link.href
Cells(sat, 2) = link.innerText
sat = sat + 1
End If

If sat = 95 Then GoTo atla2
atla:
Next link

atla2:

IE.Quit: Set IE = Nothing
End With

MsgBox ("Bitti  ")
End Sub



Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)


If Target.Column = 2 Then
Sheets("Sayfa2").Cells(1, 2).Value = Target.Value2
Sheets("Sayfa2").Cells(1, 1).Value = Cells(Target.Row, 1).Value
'Cancel = True
Sheets("Sayfa2").Select
End If
Cancel = True
End Sub
Sayfa2 deki kodlar

Kod:
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Sub CommandButton1_Click()
Dim URL As String

Dim IE As Object

Range("A2:Z5000").ClearContents
URL = Cells(1, 1).Value '"http://www.bestatistic.com/gol-istatistikleri.html"

Set IE = CreateObject("InternetExplorer.Application")
sat = 3

With IE
.Navigate URL
.Visible = 1
ShowWindow IE.hwnd, 2

Do Until IE.ReadyState = 4: DoEvents: Loop
Do While IE.Busy: DoEvents: Loop

On Error Resume Next

'Application.Wait (Now + TimeValue("0:00:01"))

For k = 0 To 2

'MsgBox ie.Document.Body.GetElementsByTagName("TABLE").Item(k).innertext
'MsgBox k & " " & IE.Document.getElementsByTagName("table").Item(k).innerText
Set t = IE.Document.getElementsByTagName("table").Item(k)
For i = 0 To t.Rows.Length - 1
For j = 0 To t.Rows(i).Cells.Length - 1
Cells(sat, j + 1) = Replace((t.Rows(i).Cells(j).innerText), Chr(10), "")
Next
sat = sat + 1
Next
Next

IE.Quit: Set IE = Nothing
End With

MsgBox ("Bitti  ")
End Sub
 

Ekli dosyalar

Katılım
8 Nisan 2015
Mesajlar
59
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
18-08-2022
Çok teşekkür ederim, akşam inceleme şansı bulacağım, mutlaka geri dönüş yapacağım.

Elinize sağlık.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,873
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Teşekkürler iyi çalışmalar
 
Katılım
8 Nisan 2015
Mesajlar
59
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
18-08-2022
Hocam tekrar ellerinize sağlık, bir çok konuda ufkumu genişleten bir cevap yazmışsınız.
Ancak esasen sorduğum soruyu tam olarak belirtemediğimi farkettim.
Tabloları çok güzel bir şekilde almışsınız, fakat benim sormak istediğim soru şu; kullandığınız örnek linkte bu verileri "GENEL" sekmesinden çekiyor, benim yapmak istediğim ayrı ayrı iç ve dış saha sekmelerinden de çekmek. Bunun aynısını mackolik.com sitesine uyarlayacağım çünkü bu örnek linkte son sezon istatistikleri girilmemiş, ancak orada da aynı burda olduğu şekilde sekmeler var. İç ve dış sahayı ayrı ayrı çekmenin bir yolu var mıdır?

İlginize ve verdiğiniz bilgilere çok teşekkür ederim.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,873
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Merhaba zaten genel ,iç,dış tablolardan verileri alt alta çekiyor
 
Katılım
8 Nisan 2015
Mesajlar
59
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
18-08-2022
Alttaki tabloları yeni farketmişim hocam, çok teşekkür ederim.
 
Katılım
8 Nisan 2015
Mesajlar
59
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
18-08-2022
Tekrar konuyu hortlatıyorum ancak, aynı kodu http://www.mackolik.com/Puan-Durumu/s=51830/Turkiye-Spor-Toto-Super-Lig için çalıştırdığımda değişik sekmelerdeki verileri çekmek yerine aynı sayfadaki tabloları çekiyor.

k değişkenini değiştirmeye çalıştım istediğim sonucu alamadım. Sayfa 1'deki linklerin de işlevini tam anlamıyla çözemedim, sadece 1 lig örneği yeterli olduğundan ilk yolladığınız örnek üzerinde çalışıyorum
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,873
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Sayfa1 deki kodlar veri alınacak wep adreslerini getiriyor.

bu kodu bir dene

Kod:
Sub deneme()
Dim URL As String

Dim IE As Object

Range("A1:AA100").ClearContents


URL = "http://www.mackolik.com/Puan-Durumu/s=51830/Turkiye-Spor-Toto-Super-Lig"


Set IE = CreateObject("InternetExplorer.Application")
sat = 1

With IE
.Navigate URL

.Visible = 1
.Width = 400
.Height = 850
.Left = 10 '250
.Top = 0

Do Until IE.ReadyState = 4: DoEvents: Loop
Do While IE.Busy: DoEvents: Loop

On Error Resume Next

'Application.Wait (Now + TimeValue("0:00:01"))

For k = 0 To 0

'MsgBox ie.Document.Body.GetElementsByTagName("TABLE").Item(k).innertext
'MsgBox k & " " & IE.Document.getElementsByTagName("table").Item(k).innerText
Set t = IE.Document.getElementsByTagName("table").Item(k)
For i = 0 To t.Rows.Length - 1
For j = 0 To t.Rows(i).Cells.Length - 1
Cells(sat, j + 1) = Replace((t.Rows(i).Cells(j).innerText), Chr(10), "")
Next
sat = sat + 1
Next
Next

IE.Quit: Set IE = Nothing
End With

MsgBox ("Bitti  ")
End Sub
 
Katılım
8 Nisan 2015
Mesajlar
59
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
18-08-2022
Yolladığınız şekilde sadece puan durumunu çekiyor.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,873
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Ben 1. nolu mesajdaki sorunuza cevap yazmıştım 1 nolu mesajdaki sorunuz çözüldümü?
Diğer taraftan 11. nolu mesajınızdaki link diğerinden farklı şimdi buraya girmek istemiyorum her wep sitesinden veri almak mümkün gözükmüyor bu işlemler oldukca meşşekketli ve zaman istiyen işler size iyi çalışmalar diliyorum.
 
Katılım
8 Nisan 2015
Mesajlar
59
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
18-08-2022
İlginize teşekkür ederim, iyi günler.
 
Katılım
18 Temmuz 2013
Mesajlar
84
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
16-12-2025
Ben 1. nolu mesajdaki sorunuza cevap yazmıştım 1 nolu mesajdaki sorunuz çözüldümü?
Diğer taraftan 11. nolu mesajınızdaki link diğerinden farklı şimdi buraya girmek istemiyorum her wep sitesinden veri almak mümkün gözükmüyor bu işlemler oldukca meşşekketli ve zaman istiyen işler size iyi çalışmalar diliyorum.
Emeğinize sağlık. Neye göre kolay veya zor oluyor veri çekme işlemi? Buradaki değişken nedir? Teşekkür ederim.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,873
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Emeğinize sağlık. Neye göre kolay veya zor oluyor veri çekme işlemi? Buradaki değişken nedir? Teşekkür ederim.
Kodları yazmak kolay değil her web sitesinden verilerin alma durumları farklı oluyor bazende çok zor oluyor.
Web sitelerinin sayfa yapıları sık sık değişiyor bu yüzden bu sorulara cevap vermekten kaçınıyorum

Diğer taraftan kodların ne işlem yaptığını buradan yazı dilinde yazmak izah etmek baya zor
 
Üst