Sub getirakakce()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim sayfa As Worksheet
For Each sayfa In ThisWorkbook.Sheets
If sayfa.Name <> Sayfa1.Name Then
sayfa.Delete
End If
Next sayfa
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Private Sub akakcecek()
Call getirakakce
Dim XMLReq As New MSXML2.XMLHTTP60
Dim HTMLDoc As New MSHTML.HTMLDocument
Dim link As String
Dim row As Integer
Dim sonsat As Integer
Dim url As String
Dim i As Integer
Dim li, tr
sonsat = Sheets("Akakce").Range("A10000").End(xlUp).row
For i = 2 To sonsat
url = Sheets("Akakce").Cells(i, 2)
XMLReq.Open "GET", url, False
XMLReq.setRequestHeader "cf-cache-status", "DYNAMIC"
XMLReq.setRequestHeader "content-type", "txt/html"
XMLReq.setRequestHeader "user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"
XMLReq.send allbody
If XMLReq.Status <> 500 Then
Sheets("Akakce").Range("C" & i) = "Fiyat Çekilemedi"
End If
HTMLDoc.body.innerHTML = (XMLReq.responseText)
Set urunAdi = HTMLDoc.getElementsByTagName("h1")(0)
Sheets("Akakce").Cells(i, 3) = urunAdi.innerText
Dim sayfa As Worksheet
Set sayfa = sayfabul(Sheets("Akakce").Cells(i, 1).Value)
If sayfa Is Nothing Then
Set sayfa = ThisWorkbook.Sheets.Add(After:= _
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
sayfa.Name = Sheets("Akakce").Cells(i, 1).Value
End If
'---
sayfa.Range("A1").Value = "Ürün Adı"
sayfa.Range("A2").Value = urunAdi.innerText
sayfa.Range("B1").Value = "Barkod"
sayfa.Range("B2").Value = sayfa.Name
sayfa.Range("C1").Value = "Link"
sayfa.Range("C2").Value = url
Dim el As HTMLSpanElement
Dim sat As Integer
sat = 2
sayfa.Range("D1").Value = "Fiyatlar"
sayfa.Range("E1").Value = "Ortalama Fiyat"
For Each el In HTMLDoc.getElementsByClassName("pb_v8")
sayfa.Range("D" & sat).Value = CCur(el.getElementsByClassName("pt_v8")(0).innerText)
sat = sat + 1
If sat = 12 Then Exit For ' fiyat gösterim limiti 10
'End If
Next el
sat = 1
sayfa.Range("E2").Value = (Application.WorksheetFunction.Average(sayfa.Range("D2:D11")))
link = HTMLDoc.getElementsByClassName("img_w")(0).getAttribute("href")
Call resimekle(sayfa, link)
For Each tr In HTMLDoc.getElementById("DT_w").getElementsByTagName("tr")
Range("G" & sat).Value = tr.getElementsByTagName("td")(0).innerText
Range("H" & sat).Value = IIf(tr.getElementsByTagName("td")(1).innerText = ":", ChrW(&H2713), tr.getElementsByTagName("td")(1).innerText)
Range("H" & sat).Value = Replace(Range("H" & sat).Value, ": ", "")
sat = sat + 1
Next tr
sat = 1
If HTMLDoc.getElementsByClassName("icSTsc_v8").Length <> 0 Then
For Each li In HTMLDoc.getElementsByClassName("icSTsc_v8")(0).getElementsByTagName("li")
Range("I" & sat).Value = li.getElementsByTagName("b")(0).innerText
Range("J" & sat).Value = Replace(li.innerText, li.getElementsByTagName("b")(0).innerText, "")
sat = sat + 1
Next li
End If
Range("K1").Value = "Ortalama Puan"
If HTMLDoc.getElementById("UV4Pr").Children(0).Children.Length <> 0 Then
Range("K2").Value = (HTMLDoc.getElementById("UV4Pr").Children(0).Children(0).Children(2).innerText)
Else
Range("K2").Value = "-"
End If
'---
Set sayfa = Nothing
Next i
End Sub
Function sayfabul(sayfaisim As String) As Worksheet
Dim sayfa As Worksheet
For Each sayfa In ThisWorkbook.Worksheets
If sayfa.Name = sayfaisim Then
Set sayfabul = sayfa
End If
Next
End Function
Sub resimekle(ByVal sayfa As Worksheet, link As String)
link = Replace(link, "about", "http")
Dim productImage As Picture 'Declare image picture object
Dim productImageUrlRng As Range 'Declare range object to contain image URL
Dim productImageRng As Range 'Location image will be placed
'Delete any existing pictures:
Set productImageRng = sayfa.Range("A12:J23") 'Where I want to put the image
productImageRng.Select
'productImageRng.Delete --Does not delete pictures in range
sayfa.Pictures.Delete 'Delete existing images
Set productImage = sayfa.Pictures.Insert(link)
With productImage
.ShapeRange.LockAspectRatio = msoTrue
'.Width = productImageRng.Width
.Height = productImageRng.Height
' .Top = Rows(cl.Row).Top
' .Left = Columns(cl.Column).Left
End With
End Sub