Soru Ziraat katılım bankasından altın alış ve satış verilerini excele çekme

okan32

Altın Üye
Katılım
12 Mayıs 2016
Mesajlar
376
Excel Vers. ve Dili
Ofis 2019- 32 Bit - Türkçe
Altın Üyelik Bitiş Tarihi
16-04-2026
Aşağıdaki kod ile ziraat katılım bankasından altın alış ve satış verilerini excele çekiyordum ama dünden bu tarafa hata veriyor. yardımlarınız için şimdiden çok teşekkürler.

Kod:
Sub AltinVeriAl()
'This will load a webpage in IE
    Dim i As Long
    Dim URL As String
    Dim IE As Object
    Dim objElement As Object
    Dim objCollection As Object
    'Create InternetExplorer Object
    Worksheets("Sayfa1").Unprotect "2713233"
Range("H2") = Format(Now, "dd.mm.yyyy hh:mm")
    Set IE = CreateObject("InternetExplorer.Application")
    'Set IE.Visible = True to make IE visible, or False for IE to run in the background
    IE.Visible = False
    'Define URL
    URL = "https://www.ziraatkatilim.com.tr/"
    'Navigate to URL
    IE.Navigate URL
    ' Statusbar let's user know website is loading
    Application.StatusBar = URL & " is loading. Please wait..."
    ' Wait while IE loading...
    'IE ReadyState = 4 signifies the webpage has loaded (the first loop is set to avoid inadvertently skipping over the second loop)
    Do While IE.ReadyState = 4: DoEvents: Loop   'Do While
    Do Until IE.ReadyState = 4: DoEvents: Loop   'Do Until
    'Webpage Loaded
    Application.StatusBar = URL & " Loaded"
    Application.Wait (Now + TimeValue("0:00:05"))
   ActiveSheet.Range("r1") = IE.document.getelementbyid("piyasalar").innertext
    'Unload IE
    IE.Quit
    Set IE = Nothing
    Set objElement = Nothing
    Set objCollection = Nothing
    'MsgBox "Veriler çekildi."
    Range("G2").Value = Range("J2").Value
    Range("G3").Value = Range("J3").Value
    Range("G4").Value = Range("J4").Value
    Range("G5").Value = Range("J5").Value
    UserForm1.Show 'ana kod bloğuna geçerken bu satır aktif edilmeli
    Worksheets("Sayfa1").Protect "2713233"
    
End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Ekli dosyayı kullanabilirsiniz...

.
 

Ekli dosyalar

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Eğer sizin istediğiniz sadece altın alış ve satış fiyatlarıysa, o zaman aşağıdaki kodu deneyin.

Ben sonuçları MsgBox ile gösterdim, siz istediğiniz hücreye yazdırabilirsiniz....

C#:
Sub GetAltin()
    ' Haluk - 14/05/2020
    '
    Dim objHTTP As Object, strURL As String, HTMLcode As String
    Dim regExp As Object, valDoviz As Variant
    
    Set objHTTP = CreateObject("MSXML2.XMLHTTP")
    
    strURL = "https://www.ziraatkatilim.com.tr/ajax/piyasalar.php"
    
    objHTTP.Open "GET", strURL, False
    objHTTP.setRequestHeader "If-None-Match", "\zoru-basaririz-imkansiz-biraz-zaman-alir\"
    objHTTP.send
    
    If objHTTP.Status = 200 Then
        HTMLcode = objHTTP.responseText
        
        Set regExp = CreateObject("VBScript.RegExp")
        regExp.ignorecase = True
        regExp.Global = True
        regExp.Pattern = """code"":""XAU"",""rate"":(.+?),""diff"":(.+?),""buy"":""(.+?)"",""sell"":""(.+?)"""
        
        Set RetVal = regExp.Execute(HTMLcode)
        
        altinALIS = RetVal(0).SubMatches(2) + 0
        altinSATIS = RetVal(0).SubMatches(3) + 0
                
        MsgBox altinALIS
        MsgBox altinSATIS
   
    ElseIf objHTTP.Status = 429 Then
        MsgBox "Sunucuya çok fazla istek yollandý, bir süre dinlenin....!"
    ElseIf objHTTP.Status = 503 Then
        MsgBox "Sunucuda bakým var, bir süre sonra tekrar deneyin....!"
    Else
        MsgBox "Sunucudan alýnan hata mesajý :" & vbCrLf & vbCrLf & _
               "Kod :" & objHTTP.Status & vbCrLf & vbCrLf & _
               objHTTP.Statustext
    End If
    
    Set regExp = Nothing
    Set objHTTP = Nothing
End Sub
.
 
Son düzenleme:

okan32

Altın Üye
Katılım
12 Mayıs 2016
Mesajlar
376
Excel Vers. ve Dili
Ofis 2019- 32 Bit - Türkçe
Altın Üyelik Bitiş Tarihi
16-04-2026
Eğer sizin istediğiniz sadece altın alış ve satış fiyatlarıysa, o zaman aşağıdaki kodu deneyin.

Ben sonuçları MsgBox ile gösterdim, siz istediğiniz hücreye yazdırabilirsiniz....

C#:
Sub GetData2()
    ' Haluk - 14/05/2020
    '
    Dim objHTTP As Object, strURL As String, HTMLcode As String
    Dim regExp As Object, valDoviz As Variant
  
    Set objHTTP = CreateObject("MSXML2.XMLHTTP")
  
    strURL = "https://www.ziraatkatilim.com.tr/ajax/piyasalar.php"
  
    objHTTP.Open "GET", strURL, False
    objHTTP.setRequestHeader "If-None-Match", "\zoru-basaririz-imkansiz-biraz-zaman-alir\"
    objHTTP.send
  
    If objHTTP.Status = 200 Then
        HTMLcode = objHTTP.responseText
      
        Set regExp = CreateObject("VBScript.RegExp")
      
        regExp.ignorecase = True
        regExp.Global = True
        regExp.Pattern = """code"":""XAU"",""rate"":(.+?),""diff"":false,""buy"":""(.+?)"",""sell"":""(.+?)"""
      
        Set RetVal = regExp.Execute(HTMLcode)
      
        altinALIS = RetVal(0).SubMatches(1) + 0
        altinSATIS = RetVal(0).SubMatches(2) + 0
           
        MsgBox altinALIS
        MsgBox altinSATIS
 
    ElseIf objHTTP.Status = 429 Then
        MsgBox "Sunucuya çok fazla istek yollandý, bir süre dinlenin....!"
    ElseIf objHTTP.Status = 503 Then
        MsgBox "Sunucuda bakým var, bir süre sonra tekrar deneyin....!"
    Else
        MsgBox "Sunucudan alýnan hata mesajý :" & vbCrLf & vbCrLf & _
               "Kod :" & objHTTP.Status & vbCrLf & vbCrLf & _
               objHTTP.Statustext
    End If
  
    Set regExp = Nothing
    Set objHTTP = Nothing
End Sub
.
Tamam hocam teşekkürler
 

okan32

Altın Üye
Katılım
12 Mayıs 2016
Mesajlar
376
Excel Vers. ve Dili
Ofis 2019- 32 Bit - Türkçe
Altın Üyelik Bitiş Tarihi
16-04-2026
Eğer sizin istediğiniz sadece altın alış ve satış fiyatlarıysa, o zaman aşağıdaki kodu deneyin.

Ben sonuçları MsgBox ile gösterdim, siz istediğiniz hücreye yazdırabilirsiniz....

C#:
Sub GetData2()
    ' Haluk - 14/05/2020
    '
    Dim objHTTP As Object, strURL As String, HTMLcode As String
    Dim regExp As Object, valDoviz As Variant
  
    Set objHTTP = CreateObject("MSXML2.XMLHTTP")
  
    strURL = "https://www.ziraatkatilim.com.tr/ajax/piyasalar.php"
  
    objHTTP.Open "GET", strURL, False
    objHTTP.setRequestHeader "If-None-Match", "\zoru-basaririz-imkansiz-biraz-zaman-alir\"
    objHTTP.send
  
    If objHTTP.Status = 200 Then
        HTMLcode = objHTTP.responseText
      
        Set regExp = CreateObject("VBScript.RegExp")
      
        regExp.ignorecase = True
        regExp.Global = True
        regExp.Pattern = """code"":""XAU"",""rate"":(.+?),""diff"":false,""buy"":""(.+?)"",""sell"":""(.+?)"""
      
        Set RetVal = regExp.Execute(HTMLcode)
      
        altinALIS = RetVal(0).SubMatches(1) + 0
        altinSATIS = RetVal(0).SubMatches(2) + 0
           
        MsgBox altinALIS
        MsgBox altinSATIS
 
    ElseIf objHTTP.Status = 429 Then
        MsgBox "Sunucuya çok fazla istek yollandý, bir süre dinlenin....!"
    ElseIf objHTTP.Status = 503 Then
        MsgBox "Sunucuda bakým var, bir süre sonra tekrar deneyin....!"
    Else
        MsgBox "Sunucudan alýnan hata mesajý :" & vbCrLf & vbCrLf & _
               "Kod :" & objHTTP.Status & vbCrLf & vbCrLf & _
               objHTTP.Statustext
    End If
  
    Set regExp = Nothing
    Set objHTTP = Nothing
End Sub
.
Haluk hocam ekran görüntüsündeki satırda hata verdi
 

Ekli dosyalar

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
5 No'lu mesajdaki kodu revize ettim, onu kullanın...

.
 
Son düzenleme:
Üst