Tarihe Göre TCMB Döviz Kuru Aldırma

Katılım
9 Haziran 2010
Mesajlar
1
Excel Vers. ve Dili
2003 türkçe
Merhaba Arkadaşlar,
Sahibi olduğum şirkette teklif formatı kullanıyoruz. Teklif formatında USD,EURO ve TL olarak alış fiyatlarını girdiğim bir bölüm var buraya girdiğim rakamları Teklifi verdiğim döviz cinsine göre otomatik çevirip teklifi öyle hazırlıyor. Ancak bunu yaparken USD ve EURO kurlarını elle her seferinde girmem gerekiyor. TCMB den çekmeyi denedim fakat buda her excele girişte otomatik kur çektiği için teklifin fiyatlarında bozulmalara sebebiyet veriyor. Teklifi oluşturduğum bir tarih alanıda var bu tarih alalında ki tarihi baz alarak sadece o günün kurunu çekmesi mümkünmüdür ?
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,634
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Merhaba,

Aşağıdaki KTF'yi deneyin.

Kullanımı,

Kod:
=kur(A1)

yada

=kur("30.06.2018")

Kod:
Function kur(veri As Date)
Application.Volatile

Set dnm = CreateObject("MSXML2.XMLHTTP")

gun = veri - 1

Do

a = Year(gun) & Format(Month(gun), "0#") & "/" & Replace(CStr(gun), ".", "")

baglan = "http://www.tcmb.gov.tr/kurlar/" & a & ".xml"
'baglan = "http://www.tcmb.gov.tr/kurlar/today.xml"

dnm.Open "get", baglan, False
  dnm.send
 icerik$ = dnm.responseText
temizlik = Split(icerik, "<Currency CrossOrder="): a = 1
icerik$ = ""
On Error Resume Next
cr = IsError(InStr(temizlik(1), "</CurrencyName>"))

gun = gun - 1
Loop While cr = ""
x = 2


sonuclar = Split(temizlik(1), "</CurrencyName>")
sonuclar1 = Split(sonuclar(1), "<ForexBuying>")

Sonuc = VBA.Left(sonuclar1(1), 6)

kur = CDbl(Replace(Sonuc, ".", ","))

End Function
 
Son düzenleme:

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
Yukarida kuvari nickli arkadasimizin onerisi muhtemelen isinizi gorecektir.

Ancak; TCMB gunluk ve gecmise yonelik doviz ve efektif kurlarini XML tablosu olarak yayinlamakta oldugundan, istenilen verileri uygun bir kodlama ile daha hizli ve rahat/guvenilir bir sekilde elde etmek mumkundur.

Boyle bir dosya isterseniz, ucreti karsiliginda verebilirim.

https://drive.google.com/open?id=1Zcpk5SNpZ77nRRSvOMSV1ZHm1tLGDcTd

.
 
Son düzenleme:

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Merhaba,

Aşağıdaki KTF'yi deneyin.

Kullanımı,

Kod:
=kur(A1)

yada

=kur("30.06.2018")

Kod:
Function kur(veri As Date)
Application.Volatile

Set dnm = CreateObject("MSXML2.XMLHTTP")

gun = veri - 1

Do

a = Year(gun) & Format(Month(gun), "0#") & "/" & Replace(CStr(gun), ".", "")

baglan = "http://www.tcmb.gov.tr/kurlar/" & a & ".xml"
'baglan = "http://www.tcmb.gov.tr/kurlar/today.xml"

dnm.Open "get", baglan, False
  dnm.send
icerik$ = dnm.responseText
temizlik = Split(icerik, "<Currency CrossOrder="): a = 1
icerik$ = ""
On Error Resume Next
cr = IsError(InStr(temizlik(1), "</CurrencyName>"))

gun = gun - 1
Loop While cr = ""
x = 2


sonuclar = Split(temizlik(1), "</CurrencyName>")
sonuclar1 = Split(sonuclar(1), "<ForexBuying>")

Sonuc = VBA.Left(sonuclar1(1), 6)

kur = CDbl(Replace(Sonuc, ".", ","))

End Function
Erdem_34 üstadım paylaşım için teşekkürler. Acaba bu kodu diğer döviz türleri için de kullanmak istenirse kodum hangi bölümü değiştirilmeli acaba !
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba Sayın @baydeniro .
SAyın @Erdem_34 şu an çevrimiçi değil.

-- Hangi yabancı para sorusunun cevabı aşağıda kırmızı renklendirdiğim sayı (TCMB'nin kur sayfasında listedeki sıra numarası, EURO için 4 gibi).
-- Kur çeşidi için ise; Forex (Döviz), Efektif (Banknote), Alış(Buying), Satış(Selling) kısımlarında değişiklik yapabilirsiniz.
sonuclar = Split(temizlik(1), "</CurrencyName>")
sonuclar1 = Split(sonuclar(1), "<ForexBuying>")
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,712
Excel Vers. ve Dili
Excel 2019 Türkçe
Kodu biraz genişlettim. Üç döviz cinsi(Usd, Eur, Gbp) için sorgu yapılabiliyor. Döviz Kurlarını da tablodaki dört seçeneğe(Döviz Alış, Döviz Satış, Efektif Alış, Efektif Satış) göre sorgulayabilirsiniz.
=Kur("08.10.2019;"Usd";"Döviz Alış")


Kod:
Function Kur(veri As Date, DovizCinsi As Variant, DovizKuru As Variant)

Application.Volatile
'-----------Ben ekledim-------------------



        If DovizCinsi = "Usd" Then
            DovizCinsi = 1
        ElseIf DovizCinsi = "Eur" Then
            DovizCinsi = 4
        ElseIf DovizCinsi = "Gbp" Then
            DovizCinsi = 5
        End If


        If DovizKuru = "Döviz Alış" Then
            DovizKuru = "<ForexBuying>"
        ElseIf DovizKuru = "Döviz Satış" Then
            DovizKuru = "<ForexSelling>"
        ElseIf DovizKuru = "Efektif Alış" Then
            DovizKuru = "<BanknoteBuying>"
        ElseIf DovizKuru = "Efektif Satış" Then
            DovizKuru = "<BanknoteSelling>"
        End If

    '----------------------------------------

Set dnm = CreateObject("MSXML2.XMLHTTP")

gun = veri - 1

Do

a = Year(gun) & Format(Month(gun), "0#") & "/" & Replace(CStr(gun), ".", "")

baglan = "http://www.tcmb.gov.tr/kurlar/" & a & ".xml"
'baglan = "http://www.tcmb.gov.tr/kurlar/today.xml"

dnm.Open "get", baglan, False
  dnm.send
icerik$ = dnm.responseText
temizlik = Split(icerik, "<Currency CrossOrder="): a = 1
icerik$ = ""
On Error Resume Next
cr = IsError(InStr(temizlik(DovizCinsi * 1), "</CurrencyName>"))

gun = gun - 1
Loop While cr = ""
'x = 2


sonuclar = Split(temizlik(DovizCinsi * 1), "</CurrencyName>")
sonuclar1 = Split(sonuclar(1), DovizKuru)

Sonuc = VBA.Left(sonuclar1(1), 6)


Kur = CDbl(Replace(Sonuc, ".", ","))

End Function
 
Katılım
24 Ekim 2019
Mesajlar
1
Excel Vers. ve Dili
visiual basic
hata veriyor.deger bulamıyor.Kur fonksiyonu geliyor ancak deger cekemiyor
 
Katılım
15 Kasım 2008
Mesajlar
2
Excel Vers. ve Dili
excell
TCMB' nin sayfasında değişiklikler oldu. Sanırım bu yüzden hata veriyor. Değişiklikleri güncelledim ama ne yaptıysam olmadı.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,634
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
http yazan yerleri https olarak değiştirin.
 
Katılım
30 Temmuz 2009
Mesajlar
21
Excel Vers. ve Dili
Microsoft Office 365
Kodu biraz genişlettim. Üç döviz cinsi(Usd, Eur, Gbp) için sorgu yapılabiliyor. Döviz Kurlarını da tablodaki dört seçeneğe(Döviz Alış, Döviz Satış, Efektif Alış, Efektif Satış) göre sorgulayabilirsiniz.
=Kur("08.10.2019;"Usd";"Döviz Alış")


Kod:
Function Kur(veri As Date, DovizCinsi As Variant, DovizKuru As Variant)

Application.Volatile
'-----------Ben ekledim-------------------



        If DovizCinsi = "Usd" Then
            DovizCinsi = 1
        ElseIf DovizCinsi = "Eur" Then
            DovizCinsi = 4
        ElseIf DovizCinsi = "Gbp" Then
            DovizCinsi = 5
        End If


        If DovizKuru = "Döviz Alış" Then
            DovizKuru = "<ForexBuying>"
        ElseIf DovizKuru = "Döviz Satış" Then
            DovizKuru = "<ForexSelling>"
        ElseIf DovizKuru = "Efektif Alış" Then
            DovizKuru = "<BanknoteBuying>"
        ElseIf DovizKuru = "Efektif Satış" Then
            DovizKuru = "<BanknoteSelling>"
        End If

    '----------------------------------------

Set dnm = CreateObject("MSXML2.XMLHTTP")

gun = veri - 1

Do

a = Year(gun) & Format(Month(gun), "0#") & "/" & Replace(CStr(gun), ".", "")

baglan = "http://www.tcmb.gov.tr/kurlar/" & a & ".xml"
'baglan = "http://www.tcmb.gov.tr/kurlar/today.xml"

dnm.Open "get", baglan, False
  dnm.send
icerik$ = dnm.responseText
temizlik = Split(icerik, "<Currency CrossOrder="): a = 1
icerik$ = ""
On Error Resume Next
cr = IsError(InStr(temizlik(DovizCinsi * 1), "</CurrencyName>"))

gun = gun - 1
Loop While cr = ""
'x = 2


sonuclar = Split(temizlik(DovizCinsi * 1), "</CurrencyName>")
sonuclar1 = Split(sonuclar(1), DovizKuru)

Sonuc = VBA.Left(sonuclar1(1), 6)


Kur = CDbl(Replace(Sonuc, ".", ","))

End Function

Merhaba, bu çalışmıyor yardımcı olabilecek var mı?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,274
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
#11 nolu mesajdaki düzeltmeyi uyguladınız mı?

Ayrıca profilinizdeki excel versiyon bilgisini düzeltmenizi rica edeceğim.
 
Katılım
30 Temmuz 2009
Mesajlar
21
Excel Vers. ve Dili
Microsoft Office 365
Merhaba,

Aşağıdaki gibi çalıştırabildim, ancak hafta sonuna denk gelen günde donuyor, bağlanamıyor. sorun nedir acaba ?

Kod:
Function kur(veri As Date)
Application.Volatile
Set dnm = CreateObject("MSXML2.XMLHTTP")
gun = veri - 1

gun2 = Format(Day(gun), "0#") & Format(Month(gun), "0#") & Year(gun)

Do

a = Year(gun) & Format(Month(gun), "0#") & "/" & gun2

baglan = "https://www.tcmb.gov.tr/kurlar/" & a & ".xml"


dnm.Open "get", baglan, False
  dnm.send
 icerik$ = dnm.responseText
temizlik = Split(icerik, "<Currency CrossOrder="): a = 1
icerik$ = ""
On Error Resume Next
cr = IsError(InStr(temizlik(1), "</CurrencyName>"))

gun = gun - 1
Loop While cr = ""
x = 2

sonuclar = Split(temizlik(1), "</CurrencyName>")
sonuclar1 = Split(sonuclar(1), "<BanknoteSelling>")

Sonuc = VBA.Left(sonuclar1(1), 6)

kur = CDbl(Replace(Sonuc, ".", ","))

'kur = baglan

End Function
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,712
Excel Vers. ve Dili
Excel 2019 Türkçe
Farklı eklemeler yapmışsınız bence bu satırları öncelikle kontrol edin.
Kod:
gun2 = Format(Day(gun), "0#") & Format(Month(gun), "0#") & Year(gun)

Do

a = Year(gun) & Format(Month(gun), "0#") & "/" & gun2
 
Katılım
30 Temmuz 2009
Mesajlar
21
Excel Vers. ve Dili
Microsoft Office 365
Orijinal hali ile çalışmıyorki normal veri olan tarihlerde sorun yok, veri olmayan tarih olduğunda tarihten 1 çıkararak işlem yapması gerekiyor ancak bu uygulama çalışmıyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,274
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Alternatif;

Harici Link (Silinebilir) ; https://we.tl/t-BnLu9XUmpk

KTF kullanımı;

=TCMB_KURU(Para_Birimi;Tarih;Kur_Tipi)

Kur_Tipi parametresinde aşağıdaki ifadeler kullanılmalıdır,

DA - Döviz Alış
DS - Döviz Satış
EA - Efektif Alış
ES - Efektif Satış

Örnek kullanımlar;

=TCMB_KURU("EURO";"01.04.2020";"DA")
=TCMB_KURU("ABD DOLARI";"15.04.2020";"EA")
=TCMB_KURU("ABD DOLARI";BUGÜN();"EA")
 

Ekli dosyalar

Katılım
30 Temmuz 2009
Mesajlar
21
Excel Vers. ve Dili
Microsoft Office 365
hiçbir dosyayı indiremiyorum :) Altınüye olmamı istiyor :(
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,274
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
#17 nolu mesajıma harici link eklenmiştir.
 
Üst