Skip to main content

AccessTr.neT


Excel Vba İle Döviz Kurlarını Alamıyorum.

Oğuz Türkyılmaz
Oğuz Türkyılmaz
5
94

Excel Vba İle Döviz Kurlarını Alamıyorum.

Çözüldü #1
Herkese sağlıklı günler dilerim.
Netteki bir videoda uygulanan şekliyle günlük döviz kurlarını Excel sayfasına çekmeye çalışıyorum.
Kod
If tablom.Length = 0 Then GoTo cik:

bu kod satırında hata veriyordu. Şu anda hata göstermiyor ama düğmeye bastığınızda makro çalışıyormuş gibi bir süre buton pasif halde kalıyor sonra aktif hale geliyor fakat sonuçta sayfaya bilgiler gelmiyor. Hatanın ne olduğu konusunda bilgi vermenizi rica ederim.

[Resim: do.php?img=11338]
Kod
Sub Kur()

Dim xml As Object, tablom As Object, adres As String, sat As Byte

'ThisWorkbook.Worksheets("Kurlar").
Range("A2:G100") = ""

Set xml = VBA.CreateObject("MSXML2.DOMDocument")
xml.async = False
xml.validateonparse = False
adres = "https://www.tcmb.gov.tr/kurlar/today/xml"
xml.Load adres

Set tablom = xml.SelectNodes("//Currency")

If tablom.Length = 0 Then GoTo cik:

sat = tablom.Length - 1
For i = 0 To sat

Cells(i + 2, 1) = tablom(i).ChildNodes(1).Text
Cells(i + 2, 2) = tablom(i).ChildNodes(3).Text
Cells(i + 2, 3) = tablom(i).ChildNodes(4).Text
Cells(i + 2, 4) = tablom(i).ChildNodes(5).Text
Cells(i + 2, 5) = tablom(i).ChildNodes(6).Text

Next i

cik:
Set tablom = Nothing: Set xml = Nothing: adres = vbNullString: sat = Empty


End Sub
.rar kur.rar (Dosya Boyutu: 16,24 KB | İndirme Sayısı: 1)
Access Çekirgesi 
[Resim: img-cray.gif]


Cevapla
#2
Merhaba Oğuz Bey
xml dosyasının linkini kontrol edin. xml tablosu TCMB tarafından 15:30'da yayınlanır ve bazen hatalı yüklediği için 404 hatası verir. Kodunuzda tablo uzunluğunuz 0 olursa yordamdan çık dediğiniz için tablo bilgilerini yüklemiyor. Kodunuzu ve xml linkini şimdi kontrol ettim herhangi bir sıkıntı yok.
Cevapla
#3
(12/10/2021 15:35)atoykan Adlı Kullanıcıdan Alıntı: Merhaba Oğuz Bey
xml dosyasının linkini kontrol edin. xml tablosu TCMB tarafından 15:30'da yayınlanır ve bazen hatalı yüklediği için 404 hatası verir. Kodunuzda tablo uzunluğunuz 0 olursa yordamdan çık dediğiniz için tablo bilgilerini yüklemiyor. Kodunuzu ve xml linkini şimdi kontrol ettim herhangi bir sıkıntı yok.

404 hatası almadım ama sizde çalıştımı kod @atoykan hocam.
Access Çekirgesi 
[Resim: img-cray.gif]


Cevapla
#4
Kod çalışıyor Oğuz Bey sadece linki düzeltmeniz gerekli, kodunuz aşağıdaki gibi revize etmelisiniz
Visual Basic Code
Sub Kur()

Dim xml As Object, tablom As Object, adres As String, sat As Byte

'ThisWorkbook.Worksheets("Kurlar").
Range("A2:G100") = ""

Set xml = VBA.CreateObject("MSXML2.DOMDocument")
xml.async = False
xml.validateonparse = False
adres =  "https://www.tcmb.gov.tr/kurlar/today.xml"    ' "https://www.tcmb.gov.tr/kurlar/today/xml" şeklinde yazmışsınız link hatalı doğrusu yandaki gibi olmalı
xml.Load adres

Set tablom = xml.SelectNodes("//Currency")

If tablom.Length = 0 Then GoTo cik:

sat = tablom.Length - 1
For i = 0 To sat

Cells(i + 2, 1) = tablom(i).ChildNodes(1).Text
Cells(i + 2, 2) = tablom(i).ChildNodes(3).Text
Cells(i + 2, 3) = tablom(i).ChildNodes(4).Text
Cells(i + 2, 4) = tablom(i).ChildNodes(5).Text
Cells(i + 2, 5) = tablom(i).ChildNodes(6).Text

Next i

cik:
Set tablom = Nothing: Set xml = Nothing: adres = vbNullString: sat = Empty


End Sub
Cevapla
#5
(12/10/2021 17:00)atoykan Adlı Kullanıcıdan Alıntı: Kod çalışıyor Oğuz Bey sadece linki düzeltmeniz gerekli, kodunuz aşağıdaki gibi revize etmelisiniz
Visual Basic Code
Sub Kur()

Dim xml As Object, tablom As Object, adres As String, sat As Byte

'ThisWorkbook.Worksheets("Kurlar").
Range("A2:G100") = ""

Set xml = VBA.CreateObject("MSXML2.DOMDocument")
xml.async = False
xml.validateonparse = False
adres =  "https://www.tcmb.gov.tr/kurlar/today.xml"    ' "https://www.tcmb.gov.tr/kurlar/today/xml" şeklinde yazmışsınız link hatalı doğrusu yandaki gibi olmalı
xml.Load adres

Set tablom = xml.SelectNodes("//Currency")

If tablom.Length = 0 Then GoTo cik:

sat = tablom.Length - 1
For i = 0 To sat

Cells(i + 2, 1) = tablom(i).ChildNodes(1).Text
Cells(i + 2, 2) = tablom(i).ChildNodes(3).Text
Cells(i + 2, 3) = tablom(i).ChildNodes(4).Text
Cells(i + 2, 4) = tablom(i).ChildNodes(5).Text
Cells(i + 2, 5) = tablom(i).ChildNodes(6).Text

Next i

cik:
Set tablom = Nothing: Set xml = Nothing: adres = vbNullString: sat = Empty


End Sub


onu ilk yazarken farketmiştim ve yeni dosyaya geçirirken düzelttiğimi sanıyordum allah allah. Çok Teşekkür ederim. Vaktinizi aldım.
Access Çekirgesi 
[Resim: img-cray.gif]


Cevapla
#6
Rica ederim. İyi çalışmalar
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da