- Katılım
- 18 Kasım 2012
- Mesajlar
- 423
- Excel Vers. ve Dili
- Microsoft Office 365
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Aşağıdaki linkte, geçmiş döneme ait kurların alınmasına ilişkin kullanıcı tanımlı fonksiyonların olduğu dosyalar var..... Tüm mesajları okuyup, uygun olanını seçersiniz.
https://www.excel.web.tr/threads/tc-merkez-bankasi-doeviz-kurlari-alinmasi-xml.174388/#post-951838
.
Sub XMLDosyasiniOku()
'Haluk
'06/08/2018
Dim XDoc As Object, strURL As String
Dim myList As Object
Dim Num As Byte
Range("A2:G100") = ""
Set XDoc = CreateObject("MSXML2.DOMDocument")
XDoc.async = False
XDoc.validateOnParse = False
strURL = "http://www.tcmb.gov.tr/kurlar/today.xml"
XDoc.Load strURL
Set myList = XDoc.SelectNodes("Tarih_Date/Currency[dc:creator='USD']")
MsgBox myList.Length
If myList.Length = 0 Then GoTo SafeExit:
Num = myList.Length - 1
For i = 0 To Num
Cells(i + 2, 1) = i + 1
Cells(i + 2, 2) = myList(i).ChildNodes(0).Text
Cells(i + 2, 3) = myList(i).ChildNodes(1).Text
Cells(i + 2, 4) = myList(i).ChildNodes(3).Text
Cells(i + 2, 5) = myList(i).ChildNodes(4).Text
Cells(i + 2, 6) = myList(i).ChildNodes(5).Text
Cells(i + 2, 7) = myList(i).ChildNodes(6).Text
Next
SafeExit:
Set myList = Nothing
Set XDoc = Nothing
MsgBox "bitti"
End Sub
MyListi arttırmayı denediniz miSayın evrensngr teşekkür ederim.
Ben xml kodları ile yapmak istiyorum.
Denemedim.MyListi arttırmayı denediniz mi
Hemen deneyip örnek dosya ile atıcam sizeDenemedim.
Nasıl olacak?Yazdığım kodlara ilave yazarmısınız?
Sub XMLDosyasiniOku()
Set XDoc = CreateObject("MSXML2.DOMDocument")
XDoc.async = False
XDoc.validateOnParse = False
XDoc.Load ("http://www.tcmb.gov.tr/kurlar/today.xml")
Set myList = XDoc.DocumentElement
Set List = XDoc.SelectNodes("//Currency")
Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
URL1 = ("http://www.tcmb.gov.tr/kurlar/today.xml")
xmlhttp.Open "GET", URL1, False
xmlhttp.send "at"
say = 2
deg1 = Split(xmlhttp.responseText, "Kod")
For i = 0 To List.Length - 2
deg2 = Split(deg1(i + 1), " ")
If UBound(deg2) > 0 Then
kurr = Replace(Replace(deg2(0), "=", ""), """", "")
End If
aranan = Array("EUR", "JPY")
For t = 0 To UBound(aranan)
If aranan(t) = kurr Then
Cells(say, 1) = say - 1
Cells(say, 2) = myList.ChildNodes(i).ChildNodes(0).Text
Cells(say, 3) = kurr
Cells(say, 4) = myList.ChildNodes(i).ChildNodes(1).Text
Cells(say, 5) = myList.ChildNodes(i).ChildNodes(3).Text
Cells(say, 6) = myList.ChildNodes(i).ChildNodes(4).Text
Cells(say, 7) = myList.ChildNodes(i).ChildNodes(5).Text
Cells(say, 8) = myList.ChildNodes(i).ChildNodes(6).Text
say = say + 1
End If
Next t
Next
MsgBox "işlem tamam"
End Sub
Sub XMLDosyasiniOku()
'Haluk
'06/08/2018
Dim XDoc As Object, strURL As String
Dim myList As Object
Dim Num As Byte
Range("A2:H100") = ""
Set XDoc = CreateObject("MSXML2.DOMDocument")
XDoc.async = False
XDoc.validateOnParse = False
strURL = "http://www.tcmb.gov.tr/kurlar/today.xml"
XDoc.Load strURL
Set myList = XDoc.SelectNodes("//Currency")
If myList.Length = 0 Then GoTo SafeExit:
Num = myList.Length - 1
sat = 2
For i = 0 To Num
ulke = myList(i).ChildNodes(1).Text
If ulke = "ABD DOLARI" Or ulke = "JAPON YENİ" Or ulke = "İSVİÇRE FRANGI" Then
Cells(sat, 1) = i + 1
Cells(sat, 2) = myList(i).ChildNodes(0).Text
Cells(sat, 3) = myList(i).ChildNodes(1).Text
Cells(sat, 4) = myList(i).ChildNodes(3).Text
Cells(sat, 5) = myList(i).ChildNodes(4).Text
Cells(sat, 6) = myList(i).ChildNodes(5).Text
Cells(sat, 7) = myList(i).ChildNodes(6).Text
sat = sat + 1
End If
Next
SafeExit:
Set myList = Nothing
Set XDoc = Nothing
MsgBox "bitti"
End Sub
Merhaba.
Haluk beyin kodlarında kırmızı yeri yapıncada oldu,ama ben döngüde değilde set mylist satırında yapmak istiyorum.
Set myList = XDoc.SelectNodes("//Currency[CurrencyName='US DOLLAR' or CurrencyName='JAPENESE YEN']")
Sub XMLDosyasiniOku_HD()
'Haluk
'06/08/2018 - 13/05/2019
'
Dim XDoc As Object, strURL As String
Dim myList As Object
Dim Num As Byte
Range("A2:G100") = ""
Set XDoc = CreateObject("MSXML2.DOMDocument")
XDoc.async = False
XDoc.validateOnParse = False
strURL = "http://www.tcmb.gov.tr/kurlar/today.xml"
XDoc.Load strURL
Set myList = XDoc.SelectNodes("//Currency[CurrencyName='US DOLLAR' or CurrencyName='JAPENESE YEN']")
If myList.Length = 0 Then GoTo SafeExit:
Num = myList.Length - 1
For i = 0 To Num
Cells(i + 2, 1) = i + 1
Cells(i + 2, 2) = myList(i).ChildNodes(0).Text
Cells(i + 2, 3) = myList(i).ChildNodes(1).Text
Cells(i + 2, 4) = myList(i).ChildNodes(3).Text
Cells(i + 2, 5) = myList(i).ChildNodes(4).Text
Cells(i + 2, 6) = myList(i).ChildNodes(5).Text
Cells(i + 2, 7) = myList(i).ChildNodes(6).Text
Next
SafeExit:
Set myList = Nothing
Set XDoc = Nothing
MsgBox "bitti"
End Sub
Haluk hocam;
Bu tabloyu ado ilede alabilrmiyiz?
Anladım hocam.Evren Bey, bu mesajınız gözümden kaçmış....
Ben şöyle düşünüyorum; bu işi, yani sorgulama işini yapabilmek için ilk önce söz konusu XML tablosundaki verileri bir ADO Recordset nesnesine yazdırdıktan sonra yapabilirsiniz.
Diğer yandan; bilgisayarda zaten esas sürenin gerekli ADO bağlantısını kurmak için harcandığını ve elimizde zaten hazır bir XML tablosu olduğunu düşünürsek, bunun yerine yukarıda olduğu gibi XML tablosundan XPATH kullanarak bu işleri çok daha hızlı yapmak en doğru çözüm olacaktır.
.