[Çözüldü]  Web API json veri çekme

Excel programınıza Web Sayfalarından veri alarak çalışabileceğiniz bölüm.

Web API json veri çekme

İleti#1)  l3oomerangg » 26 Haz 2018 00:38

Merhabalar ve kolay gelsin.

Öncelikle Excel VBA yı yeni yeni öğrenmeye çalıştığımı ve çok fazla bilgimin olmadığını, sitenizde ki ve diğer sitelerde ki örnekler üzerinden bazı kodları çözmeye çalıştığımı belirtmek isterim.

Bir Web API servisi üzerinden veri almaya çalışıyorum. Excel verilere ulaşabiliyor, ilk mesaj kutusunda verileri görebiliyorum ama bu Json verilerini alıp değişkenlere ve hücrelere yansıtamıyorum. Yazılan kod aşağıda ki şekilde...

Kod: Tümünü seç
Private Sub CommandButton1_Click()
test
End Sub

Sub test()

Dim httpObject As Object
Set httpObject = CreateObject("MSXML2.XMLHTTP")

sURL = "https://api.worldoftanks.eu/wot/account/list/?application_id=7dd6a16a971f0a8a173530697848a074&search=l3oomerangg"

sRequest = sURL
httpObject.Open "GET", sRequest, False
httpObject.send
sGetResult = httpObject.responseText

MsgBox sGetResult

Dim oJSON As Object
Set oJSON = JsonConverter.ParseJson(sGetResult)

For Each sItem In oJSON

  Item1 = oJSON(sItem)("nickname")
  Item2 = oJSON(sItem)("account_id")


  MsgBox "Nickname: " & Item1 & " Kullanıcı ID: " & Item2
Next

End Sub


Burada

Item1 = oJSON(sItem)("nickname")

kısmında "Type Mismatch" hatası alıyorum.

Aslında forumunuzdan sanırım Murat Osma beyin bir hava durumu ile ilgili bir json örneği vardı ve onu da denemiştim ama orada ki satir ifadelerinin nereden geldiğini çözememiştim :) Kusura bakmayın henüz acemiyim...

Yardımcı olan veya olmaya çalışan arkadaşlara şimdiden teşekkürler...
Kullanıcı avatarı
l3oomerangg
Yeni Başlamış
 
Kayıt: 15 Haz 2018 03:59
Meslek: Serbest
Yaş: 40
İleti: 56
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul / Sultangazi

Cevap: Web API json veri çekme

İleti#2)  l3oomerangg » 26 Haz 2018 00:54

Mesajımı editleyemediğim için ikinci bir mesaj atmam gerekti, şimdiden kusura bakmayın...

Aslında forumunuzdan sanırım Murat Osma beyin bir hava durumu ile ilgili bir json örneği vardı ve onu da denemiştim ama orada ki satir ifadelerinin nereden geldiğini çözememiştim :) Kusura bakmayın henüz acemiyim...


Bahsettiğim kodlar Yasin KURT beye aitmiş, kendisinden özür dilerim.

https://excelvba.net/viewtopic.php?f=8&t=29869

Bu konuda aslında güzel bir örnek hazırlamış ama kod açıklamaları olmayınca çözemedim. Orada ki "satir" ifadesi ne anlama geliyor, bir değişken mi kendi veri çekmek istediğim sisteme o kodları uyarlayamadım maalesef :) Şu an için en yakın görünen sistem yeni bulduğum kodlar ama orada da bir yerlerde hata yapıyorum...
Kullanıcı avatarı
l3oomerangg
Yeni Başlamış
 
Kayıt: 15 Haz 2018 03:59
Meslek: Serbest
Yaş: 40
İleti: 56
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul / Sultangazi

Cevap: Web API json veri çekme

İleti#3)  Yasin KURT » 28 Haz 2018 11:29

Merhaba,

"satir" kelimesini değişken olarak kullandım. Siz hangi dosyaya aktarım yapacaksınız ?
yasinkurt06@ gmail.com
Ankara 0506 669 1079
Yasin KURT
Forum Moderatörü
 
Adı Soyadı:Yasin KURT
Kayıt: 08 Arl 2008 02:18
Konum: ANKARA
Yaş: 37
İleti: 3179
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara



Cevap: Web API json veri çekme

İleti#4)  Ozan İLGÜN » 28 Haz 2018 14:49

Köşeli parantezler yüzünden veri alamıyorsunuz. Önce onları süzerseniz sorun ortadan kalkar.
Kod: Tümünü seç
Sub jsongetir()
   Dim sURL As String
   Dim sgetresult As String
    Dim oJSON As Object
Dim httpObject As Object
Set httpObject = CreateObject("MSXML2.XMLHTTP")
sURL = "https://api.worldoftanks.eu/wot/account/list/?application_id=7dd6a16a971f0a8a173530697848a074&search=l3oomerangg"
httpObject.Open "GET", sURL, False
httpObject.send
sgetresult = httpObject.responseText
sgetresult = Replace(sgetresult, "[", "")
sgetresult = Replace(sgetresult, "]", "")
Set oJSON = JsonConverter.ParseJson(sgetresult)
Range("A1").Value = "Statü"
Range("B1").Value = oJSON("status")
Range("A2").Value = "Sayı"
Range("B2").Value = oJSON("meta")("count")
Range("A3").Value = "Nickname"
Range("B3").Value = oJSON("data")("nickname")
Range("A4").Value = "Account Id"
Range("B4").Value = oJSON("data")("account_id")
End Sub

Bu kodlarla deneyebilirsiniz.

Jsonconverter dosyası sizdekinin aynısı sanırım ama değilse erişmek için linke gidiniz.
ozanilgun@mynet.com

Resim
Kullanıcı avatarı
Ozan İLGÜN
Forum Moderatörü
 
Adı Soyadı:Ozan İlgün
Kayıt: 20 Şub 2013 14:43
Konum: İst. Maltepe
Meslek: Arşivist
Yaş: 32
İleti: 2633
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul



REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: Web API json veri çekme

İleti#5)  l3oomerangg » 29 Haz 2018 03:01

Yasin ve Ozan hocam ilginiz ve yardımlarınız için teşekkür ederim.

Ozan hocam yazdığınız kodlar işime yaradı, açıkçası sorunun köşeli parantezlerde olduğunu sonradan çözmüştüm ama sorunu nasıl çözeceğimi bilmiyordum, çok makbule geçti.

Şimdi sıra JSON dan gelen verilerde ki Unix Timestamp formatındaki tarihleri normal tarih biçimine çevirmekte :) Formülle çevirebiliyorum ama VBA da sanırım function tanımlayarak çözmem gerekiyor... Bakalım araştırıyorum VBA öğrenmeye devam :)

Herşey gönlünüzce olsun inşallah...
Kullanıcı avatarı
l3oomerangg
Yeni Başlamış
 
Kayıt: 15 Haz 2018 03:59
Meslek: Serbest
Yaş: 40
İleti: 56
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul / Sultangazi

Cevap: Web API json veri çekme

İleti#6)  Ozan İLGÜN » 29 Haz 2018 11:40

Kod: Tümünü seç
Sub tarihcevirmece()
MsgBox Unixstampdantarihecevir(1530258167)
End Sub

Public Function Unixstampdantarihecevir(Unixformatlıtarih As Long) As Date
Unixstampdantarihecevir = DateAdd("s", Unixformatlıtarih, 25569)
End Function
ozanilgun@mynet.com

Resim
Kullanıcı avatarı
Ozan İLGÜN
Forum Moderatörü
 
Adı Soyadı:Ozan İlgün
Kayıt: 20 Şub 2013 14:43
Konum: İst. Maltepe
Meslek: Arşivist
Yaş: 32
İleti: 2633
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul



REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: Web API json veri çekme

İleti#7)  l3oomerangg » 29 Haz 2018 12:21

Çok teşekkür ederim Ozan hocam,

Bende kendimce dün şöyle bir kod yazmıştım... Kod güzel çalışıyor ama daha JSON dan veri çekerken denemedim... Bakalım orada da kullanabilirsem güzel olacak...

Kod: Tümünü seç
Sub Deneme()

      Dim Deneme As Date
      Deneme = TSC(Range("J12").Value) ' J12 hücresinde bulunan Timestamp formatındaki veriyi Excel tarih formatına çevir.
      Range("J13").Value = Deneme ' Çıkan sonucu J13 hücresine yaz.
   
End Sub

Function TSC(TS As Double) As Date

       TSC = (TS / 86400) + 25569 ' Orjinal Formül --- (((Timestamp Veri / 60) / 60) / 24) + "01/01/1970"

End Function
Kullanıcı avatarı
l3oomerangg
Yeni Başlamış
 
Kayıt: 15 Haz 2018 03:59
Meslek: Serbest
Yaş: 40
İleti: 56
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul / Sultangazi


Forum Excel ile Web Sayfaları Veri İşlemleri

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 2 misafir

cron
Bumerang - Yazarkafe