XML sorgu ile TCMB sitesinden kur sorgusu

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

XML sorgu ile TCMB sitesinden kur sorgusu

İleti#1)  Haldun Alay » 24 Şub 2011 02:32

Merhabalar,

Bülent Öztürk Bey'in Tarihe göre TCMB sitesinden kur bilgisi almak konulu başlığına alternatif olarak HTML yerine XML dosya üzerinden sorgu yaparak günlük döviz kurlarını alma ile ilgili yaptığım bir fonksiyonu göndermek istedim.

Aşağıdaki kodu bir modüle kopyalayın.
Kod: Tümünü seç
Option Explicit
Enum xKurTip
    xForexBuying = 0
    xForexSelling = 1
    xBanknoteBuying = 2
    xBanknoteSelling = 3
End Enum

Function KurSorgula(xKurKod As String, Optional xTarih As Date, Optional KurTipi As xKurTip = xForexBuying) As Double
    Const xmlURL1 = "http://tcmb.gov.tr/kurlar/today.xml"
    Const xmlURL2 = "http://www.tcmb.gov.tr/kurlar/%p1/%p2.xml"
    Dim xmlTCMB
    Dim xmlNODE
    Dim xmlURL As String
    Dim Sor
    If IsEmpty(xTarih) Or xTarih = #12:00:00 AM# Then
        xTarih = Date
    End If
    If xTarih >= Date Then
        xmlURL = xmlURL1
    Else
        xmlURL = Replace(Replace(xmlURL2, "%p1", Format(xTarih - 1, "yyyymm")), "%p2", Format(xTarih - 1, "ddmmyyyy"))
    End If
    Do Until XMLVarmi(xmlURL)
        If xmlURL <> xmlURL1 Then
            xTarih = xTarih - 1
            If xTarih < #6/18/2002# Then GoTo HATA
            xmlURL = Replace(Replace(xmlURL2, "%p1", Format(xTarih, "yyyymm")), "%p2", Format(xTarih, "ddmmyyyy"))
        Else
            GoTo HATA
        End If
        DoEvents
    Loop
    Set xmlTCMB = CreateObject("MSXML2.DOMDocument.6.0")
    xmlTCMB.Load xmlURL
    Do
        DoEvents
    Loop Until xmlTCMB.parsed = True
    Set xmlNODE = xmlTCMB.SelectNodes("Tarih_Date/Currency[@Kod='" & xKurKod & "'][BanknoteBuying>0]")
    Select Case KurTipi
        Case xForexBuying
            KurSorgula = Val(xmlNODE.Item(0).SelectNodes("ForexBuying").Item(0).Text)
        Case xForexSelling
            KurSorgula = Val(xmlNODE.Item(0).SelectNodes("ForexSelling").Item(0).Text)
        Case xBanknoteBuying
            KurSorgula = Val(xmlNODE.Item(0).SelectNodes("BanknoteBuying").Item(0).Text)
        Case xBanknoteSelling
            KurSorgula = Val(xmlNODE.Item(0).SelectNodes("BanknoteSelling").Item(0).Text)
    End Select
    Set xmlTCMB = Nothing
    Set xmlNODE = Nothing
    Exit Function
HATA:
    Set xmlTCMB = Nothing
    Set xmlNODE = Nothing
    KurSorgula = "Yok"
End Function

Private Function XMLVarmi(URL As String) As Boolean

    Dim HTTPBaglanti As Object
    Set HTTPBaglanti = CreateObject("WinHttp.WinHttpRequest.5.1")
    On Error GoTo XMLVarmi_Error
    HTTPBaglanti.Open "GET", URL
    HTTPBaglanti.send
    If HTTPBaglanti.Status = 200 Then
        XMLVarmi = True
    Else
        XMLVarmi = False
    End If
    Set HTTPBaglanti = Nothing
    Exit Function
XMLVarmi_Error:
    Set HTTPBaglanti = Nothing
    XMLVarmi = False
End Function


Kullanımı;
Kod: Tümünü seç
=KurSorgula(Kur_Kodu; Tarih; Kur_Tipi)

Geçerli Kur kodları
  1. AUD Avustralya Doları
  2. CAD Kanada Doları
  3. CHF İsviçre Frangı
  4. DKK Danimarka Kronu
  5. EUR Euro
  6. GBP Sterlin
  7. JPY Japon Yeni
  8. KWD Kuveyt Dinarı
  9. NOK Norveç Kronu
  10. SAR Suudi Arab. Riyali
  11. SEK İsveç Kronu
  12. USD Amerikan Doları

Tarih
Kuru sorgulamak istediğiniz tarih.
Geçerli günden büyük bir tarih verirseniz geçerli güne ait kur döndürülür.
Kur bilgisi yayınlanmamış bir tarih verirseniz verilen tarihten geriye doğru ilk yayınlanan tarihe ait kuru getirir.
18.06.2002 tarihinden itibaren TCMB sitesinde kurlar XML olarakta yayınlanmaya başladığından bu tarihten önceki kurları sorgulayamazsınız.

KurTipi
0 ile 3 arasında bir değer alabilir.
  • 0 : Döviz Alış
  • 1 : Döviz Satış
  • 2 : Efektif Alış
  • 3 : Efektif Satış
Kullanıcı avatarı
Haldun Alay
Site Dostu
 
Adı Soyadı:Haldun Alay
Kayıt: 15 Haz 2008 02:14
Konum: Rakım 0
Meslek: Turizm
Yaş: 48
İleti: 1241
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aydın/Kuşadası

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#2)  Murat OSMA » 24 Şub 2011 10:39

Teşekkürler Haldun bey, emeğinize sağlık... şkşk --)(
Kullanıcı avatarı
Murat OSMA
Site Forum Yöneticisi
 
Adı Soyadı:Murat OSMA
Kayıt: 05 Arl 2008 00:34
Konum: İstanbul
Meslek: Excel & VBA Eğitmeni
Yaş: 33
İleti: 14295
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Bağcılar - İSTANBUL

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#3)  Erhan Yavuz » 24 Şub 2011 11:23

Haldun bey, teşekkürler... şkşk [oley]
☾✭ Türkçemizi tam ve doğru kullanmaktan korkmayalım..
Teşekkür etmek Erdemdir. ECYavuz


OSMANLI OYUNU (1402-1566)
http://www.excelvba.net/viewtopic.php?f=41&t=9984

EXCEL-VBA KOD BANKASI PRO.7.0
http://www.excelvba.net/viewtopic.php?f=38&t=3304
Resim
Kullanıcı avatarı
Erhan Yavuz
Site Forum Yöneticisi
 
Adı Soyadı:Erhan Yavuz
Kayıt: 15 Haz 2008 02:13
Konum: Etiler / İstanbul
Meslek: Emekli Sb.
Yaş: 59
İleti: 5696
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul / Etiler

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#4)  capoamorte » 24 Ekm 2011 12:57

Merhaba,
Makro metnin tablosunu ve formül kullanımını doğru yaptığımı düşünüyorum ancak; "#value" hatası veriyor? Olası sebepleri ile ilgili yardımcı olabilir misiniz?
Kullanıcı avatarı
capoamorte
 
Adı Soyadı:bahadır korkmaz
Kayıt: 18 Eyl 2011 05:15
İleti: 1
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: istanbul / zeytinburnu

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

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#5)  Haldun Alay » 16 Mar 2012 01:08

Aşağıdaki dosyayı inceleyin.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
Haldun Alay
Site Dostu
 
Adı Soyadı:Haldun Alay
Kayıt: 15 Haz 2008 02:14
Konum: Rakım 0
Meslek: Turizm
Yaş: 48
İleti: 1241
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aydın/Kuşadası

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#6)  necmettin_tok » 04 Nis 2014 11:01

Güzel bir uygulama, teşekkürler.
Kullanıcı avatarı
necmettin_tok
Siteye Alışmış
 
Adı Soyadı:Necmettin TOK
Kayıt: 27 Eyl 2008 15:48
Konum: Ankara
Meslek: Kamu görevlisi
Yaş: 58
İleti: 344
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#7)  Ozan İLGÜN » 04 Nis 2014 15:17

Çok faydalı teşekkürler.
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: 2574
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul



Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#8)  myazici61 » 04 Nis 2014 16:40

Haldun Bey merhaba,
Çok güzel bir çalışma olmuş emeğinize sağlık. Fakat olmayan bir tarihte de değer veriyor. Örneğin bugün 04.04.2014 olmasına rağmen henüz açıklanmayan 06.04.2014 tarihini girdiğimizde de 04.04.2014 tarihinin kurunu veriyor.
Kullanıcı avatarı
myazici61
Siteye Alışmış
 
Adı Soyadı:Mustafa YAZICI
Kayıt: 27 Nis 2011 11:27
Konum: BURSA
Meslek: S.M.Mali Müşavir
Yaş: 49
İleti: 270
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Bursa/Osmangazi

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#9)  Haldun Alay » 14 Nis 2014 00:37

myazici61 yazdı:Haldun Bey merhaba,
Çok güzel bir çalışma olmuş emeğinize sağlık. Fakat olmayan bir tarihte de değer veriyor. Örneğin bugün 04.04.2014 olmasına rağmen henüz açıklanmayan 06.04.2014 tarihini girdiğimizde de 04.04.2014 tarihinin kurunu veriyor.


Merhaba,

Nasıl kullanılacağı ile ilgili bilgiler içerisinde belirtmiştim.

Haldun Alay yazdı:...
...
Geçerli günden büyük bir tarih verirseniz geçerli güne ait kur döndürülür.
Kur bilgisi yayınlanmamış bir tarih verirseniz verilen tarihten geriye doğru ilk yayınlanan tarihe ait kuru getirir.
18.06.2002 tarihinden itibaren TCMB sitesinde kurlar XML olarakta yayınlanmaya başladığından bu tarihten önceki kurları sorgulayamazsınız.
...
...
Kullanıcı avatarı
Haldun Alay
Site Dostu
 
Adı Soyadı:Haldun Alay
Kayıt: 15 Haz 2008 02:14
Konum: Rakım 0
Meslek: Turizm
Yaş: 48
İleti: 1241
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aydın/Kuşadası

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#10)  Enes Recep BAĞ » 14 Nis 2014 10:36

Teşekkürler. şkşk
Kullanıcı avatarı
Enes Recep BAĞ
Forum Moderatörü
 
Adı Soyadı:Enes Recep BAĞ
Kayıt: 30 Ağu 2010 17:39
Konum: 0 549 808 82 66
Meslek: Bilgi işlem
Yaş: 36
İleti: 8079
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aksaray / Merkez

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#11)  raykon1 » 04 Eyl 2014 16:52

Hocam "Object variable or With block variable not set" hatası veriyor?
Kullanıcı avatarı
raykon1
 
Adı Soyadı:remzi akyol
Kayıt: 28 Arl 2012 11:09
Konum: Ankara
Meslek: Memur
Yaş: 38
İleti: 2
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara

Cevap: Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#12)  raykon1 » 04 Eyl 2014 17:04

raykon1 yazdı:Hocam "Object variable or With block variable not set" hatası veriyor?


Özür dilerim, yanlış kullanıyormuşum. Elinize sağlık...
Kullanıcı avatarı
raykon1
 
Adı Soyadı:remzi akyol
Kayıt: 28 Arl 2012 11:09
Konum: Ankara
Meslek: Memur
Yaş: 38
İleti: 2
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#13)  nihaka » 03 Ekm 2014 21:29

İyi akşamlar,

Dosya gerçekten çok işime yaradı. teşekkürler.
Kullanıcı avatarı
nihaka
Yeni Başlamış
 
Adı Soyadı:atakan akarsu
Kayıt: 01 Arl 2013 23:00
Konum: İstanbul/Kadıköy
Meslek: Memur
Yaş: 36
İleti: 22
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul/Kadıköy

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#14)  labamba » 29 Oca 2015 16:34

Hocam kusura bakmayın bir ayrı ayrı oldu ama sizin yazdığınız koda baktığımda 19 adet farklı para birimi kaydı varken(DovizListesi.Length ki tek tek xml dosyası içinde de saydım 19 tane var) excel e 15 adet hayıt atıyor. Böyle bir sorun var.
Kullanıcı avatarı
labamba
 
Kayıt: 28 Oca 2015 15:31
Meslek: mühendis
Yaş: 32
İleti: 6
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: istanbul

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#15)  fastman46 » 06 May 2015 14:35

Merhaba

Öncelikle yaptığınız çalışma için çok teşekkür ederim. Örneğinizi indirdim ve tam anlamıyla aylardır aradığım şeyi buldum. Yanlız sizlerden bir ricam daha olacak, bir excel çalışmam zaten vardı ve bu işlerde de yeni yeni öğrenmeye başladığımdan bu xml dosyasını kendi excel sayfama nasıl ilişkilendireceğimi bilemiyorum. Bu konuda sizlerden yardım rica ediyorum. Hayırlı günler
Kullanıcı avatarı
fastman46
 
Kayıt: 06 May 2015 13:11
Meslek: muhasebe
Yaş: 36
İleti: 1
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İSTANBUL

Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#16)  eserk » 31 May 2015 11:44

hocam çok güzel bir çalışma aylardır arıyordum teşekkürler. bu sayfaya rubleyi de ekleme şansımız var mı ben excelde alt satıra rub yazıp formülü aşağı çektim ama olmadı
Kullanıcı avatarı
eserk
 
Kayıt: 29 May 2015 14:46
Meslek: MUHASEBE
Yaş: 48
İleti: 3
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: antalya

Cevap: Cevap: XML sorgu ile TCMB sitesinden kur sorgusu

İleti#17)  Haldun Alay » 03 Haz 2015 23:47

eserk yazdı:hocam çok güzel bir çalışma aylardır arıyordum teşekkürler. bu sayfaya rubleyi de ekleme şansımız var mı ben excelde alt satıra rub yazıp formülü aşağı çektim ama olmadı


Merhaba,

Fonksiyon içerisindeki
Kod: Tümünü seç
  Set xmlNODE = xmlTCMB.SelectNodes("Tarih_Date/Currency[@Kod='" & xKurKod & "'][BanknoteBuying>0]")
satırını
Kod: Tümünü seç
  Set xmlNODE = xmlTCMB.SelectNodes("Tarih_Date/Currency[@Kod='" & xKurKod & "']")
ile değiştirin.
Kullanıcı avatarı
Haldun Alay
Site Dostu
 
Adı Soyadı:Haldun Alay
Kayıt: 15 Haz 2008 02:14
Konum: Rakım 0
Meslek: Turizm
Yaş: 48
İleti: 1241
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aydın/Kuşadası


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

Bumerang - Yazarkafe