Çözüldü Tarihe Göre Tcmb Döviz Kuru Alma

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

PriveT

İlyas PINAROĞLU

Yönetici
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Sayın Makro üstadlarım merhaba,
Forumumuzda henüz bulunmayan bir konu. Bir çok kişinin de işine yarayacağını düşünüyorum.

Belirtilecek tarihlere ait TCMB kurlarını çekecek bir KTF makrosu hazırlayabilir misiniz?

Çalışma prensibi şu şekilde olmasını istiyorum;
Herhangibir hücreye, hatta bir çok hücreye tarih yazacağız.
Örneğin A5 hücresine bir tarih yazdık.
Herhangibir hücreye =euro(A5) yazdığımızda o tarihin euro kurunu, =usd(A5) yazdığımızda o tarihin usd kurunu getirsin.

Şimdiden teşekkürler, kolay gelsin.
 
Moderatörün son düzenlenenleri:
Çözüm
Merhabalar.

17 numaralı cevapta belirttiğim hususslar için iş başa düştü ve
konuyla ilgili olarak yeni bir KTF (UDF - Kullanıcı Tanımlı Fonksiyon) hazırladım.

KTF'nin kullanım şekli; Excel hücresine =TCMB_XD ( tarih ; para_cinsi ; kur_türü ) şeklinde formül yazılmasıdır.

-- Formüldeki değişkenler, başka bir hücreden alınabileceği gibi
ÇİFT TIRNAK arasında olacak şekilde doğrudan formül içerisine de yazılabilir.
-- İlgili yabancı para ismi; açılır listeden seçim yöntemiyle seçilebilir.
Burada da iki seçenek var; ilgili yabancı paranın açık/uzun adı veya 3 karakterli Döviz Kodu yazılabilir/seçilebilir.

Klasik kur çekme KTF'lerinden farklı olarak;
-- haftasonu, Milli Bayramlar/Dini Bayramlar vs...
@Ömer BARAN üstadım, bir dosyanızı buldum ama bende #DEĞER! hatası veriyor.
Belki office sürüm farkından kaynaklanıyor olabilir.
Bir bakabilir misiniz?
Formül olarak kullanılan biçiminde tarih olarak resmi tatil olmayan bir günün tarihini yazarak bir dener misiniz?
A1 hücresine 24.05.2019 gibi haftaiçi olan bir günün tarihini yazarsanız =WebDoviz(A1;B3;1) gibi yazılarak kullanılan formül hata vermez.
Formüldeki A1 yerine aşağıdaki formül parçasını yazarak, ilgili tarih haftasonu ise bundan önceki son cuma tarihinin kuru alınabilir
VBA:
Görüntülemek için giriş yapmalısınız.
(1 satır)
 
Formül olarak kullanılan biçiminde tarih olarak resmi tatil olmayan bir günün tarihini yazarak bir dener misiniz?
A1 hücresine 24.05.2019 gibi haftaiçi olan bir günün tarihini yazarsanız =WebDoviz(A1;B3;1) gibi yazılarak kullanılan formül hata vermez.
Formüldeki A1 yerine aşağıdaki formül parçasını yazarak, ilgili tarih haftasonu ise bundan önceki son cuma tarihinin kuru alınabilir
VBA:
Görüntülemek için giriş yapmalısınız.
(1 satır)
Evet Ömer Bey üstadım, cumartesi diyeymiş hata sebebi.
Teşekkürler.
 
Alternatif olsun, sayfa üzerinde parça al ile yapmış olduğum çalışma.
EURO
Kullanımı =euro(tarih)
Kod:
Görüntülemek için giriş yapmalısınız.
(23 satır)

USD
Kullanımı =usd(tarih)
Kod:
Görüntülemek için giriş yapmalısınız.
(23 satır)
Alternatif 3:
ullanımı =KurGetir(Tarih,Cinsi)
Kod:
Görüntülemek için giriş yapmalısınız.
(31 satır)
 
Moderatörün son düzenlenenleri:
Alternatif olsun, sayfa üzerinde parça al ile yapmış olduğum çalışma.
EURO
[CODE lang="php" title="Kullanımı =euro(tarih)"]Function euro(gun As Date) As Variant
Set XD = CreateObject("microsoft.xmlhttp")
trh = Year(gun) & Format(Month(gun), "0#") & "/" & Replace(CStr(gun), ".", "")
XD_URL = "http://www.tcmb.gov.tr/kurlar/" & trh & ".xml"
XD.Open "get", XD_URL, False
XD.send
gethttp = XD.responsetext
ea = InStr(1, gethttp, "EUR") 'Euro alış
euroa = Mid(gethttp, ea + 121, 6)
If euroa Like "><meta" Then euro = "Bulunamadı.": Exit Function
euro = euroa
End Function[/CODE]

USD
[CODE lang="php" title="Kullanımı =usd(tarih)"]Function usd(gun As Date) As Variant
Set XD = CreateObject("microsoft.xmlhttp")
trh = Year(gun) & Format(Month(gun), "0#") & "/" & Replace(CStr(gun), ".", "")
XD_URL = "http://www.tcmb.gov.tr/kurlar/" & trh & ".xml"
XD.Open "get", XD_URL, False
XD.send
gethttp = XD.responsetext
da = InStr(1, gethttp, "USD") 'Dolar alış
dolara = Mid(gethttp, da + 132, 6)
If dolara Like "><meta" Then dolara = "Bulunamadı.": Exit Function
usd = dolara
End Function[/CODE]
Alternatif 3:
[CODE lang="php" title="Kullanımı =KurGetir(Tarih,Cinsi)"]Function KurGetir(gun As Date, cins As Range) As Variant
Set XD = CreateObject("microsoft.xmlhttp")
trh = Year(gun) & Format(Month(gun), "0#") & "/" & Replace(CStr(gun), ".", "")
XD_URL = "http://www.tcmb.gov.tr/kurlar/" & trh & ".xml"
XD.Open "get", XD_URL, False
XD.send
gethttp = XD.responsetext
If StrConv(cins, 1) = StrConv("usd", 1) Then
da = InStr(1, gethttp, "USD") 'Dolar alış
dolara = Mid(gethttp, da + 132, 6)
If dolara Like "><meta" Then dolara = "Bulunamadı.": Exit Function
KurGetir = dolara
End If
If StrConv(cins, 1) = StrConv("euro", 1) Then
ea = InStr(1, gethttp, "EUR") 'Euro alış
euroa = Mid(gethttp, ea + 121, 6)
If euroa Like "><meta" Then euroa = "Bulunamadı.": Exit Function
KurGetir = euroa
End If
End Function[/CODE]
Metehan hocam haftasonu ve tatillerde veri gelmiyor.Birde buna bir el atsanız.Bir önceki günü baz alınabilir.
 
12.nolu mesajda (benim 1.cevabım) ki kodlar güncellenmiştir. Hafta Sonu tarihleri için düzeltme yapılmıştır. Resmi tatiller için çalışma yapılacak. :)
 
Sayın @metehan8001 emeğinize sağlık.
Geçmişte ben de bir miktar ilgilenmiştim bu konuyla ama, zamanında net'ten bilgi çekme konusunda edindiğim tecrübe yeterli gelmemişti ve olay soğudu gitti.

Malumdur TC. Merkez Bankası sayfasında yabancı para kur bilgileriyle ilgili iki alan var;
-- Gösterge Niteliğindeki Merkez Bankası Kurları << İlgili Sayfa
USD, AUD, DKK, EUR, GBP, CHF, SEK, CAD, KWD, NOK, SAR, JPY, BGN, RON, RUB, IRR, CNY, PKR, QAR
-- Alım Satıma Konu Olmayan Dövizlere İlişkin Bilgi Amaçlı Kurlar << İlgili Sayfa
ARS, ALL, AZN, BHD, AED, BAM, BRL, CZK, IDR, PHP, ZAR, KRW, GEL, INR, HRK, HKD, IQD, ISK, KZT, QAR, HUF, MKD, MYR, MXN, EGP, UZS, PEN, PLN, SGD, SYP, THB, TMT, UAH, JOD, ILS, NZD

Madem bu işe el attınız; bence hücreye yazılacak formül şeklinde kullanımı olan KTF'de;
-- tarih kontrolü olacak (dini bayramları dahil etmek sıkıntılı olabilir ancak en azından milli bayram ve haftasonu kontrolü olabilir),
-- belirttiğim iki kaynakta bulunan yabancı para türlerinin tümünü içerecek
-- kur türünü (döviz/efektif alış/satış) de seçimli hale getirecek (tabi ilk grupta bazılarına ait iki, bazılarına ait 4, ikinci grupta ise 1 kur türü var)
-- bu KTF'de, tıpkı yerleşik işlevlerde olduğu gibi formül unsurları için ipucu-açıklama gibi eklemeler de olacak şekilde bir yapı oluştrursanız,
(bu konuda şurada örnek var >> wellsr.com/vba/2017/excel/vba-macrooptions-to-add-udf-description/)
EKLENTİ haline getirilip tüm belgelerde kullanmaya müsait bir KTF ortaya çıkartmış olursunuz ve tüm üyeler için çok faydalı olur diye düşünüyorum.
.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Konuyu başlatan
Yönetici
İlyas PINAROĞLU
Katılım
Konum
Alanya & Moskova
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Makro Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
26
Geri
Üst