• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

  • Forum yazılımı güncelenmiştir.

    Beklenmedik durumlar görürseniz lütfen yönetime iletin.

Soru Bir web sayfasının xml dosyasına nasıl ulaşabilirim?

RSS den excel ile veri çekme işlemi Tamamdır. :LOL::LOL:(y)
 
Evren Bey, tebrikler .....:cool:

XML tabloları kullanıcıların veri çekmesine yönelik hazırlanmış olduğunda, tadına doyum olmaz.....

Örneğin, aşağıdaki linkte TCMB ve Serbest Piyasa'dan döviz kurlarını çekmek gibi ....

https://www.excel.web.tr/threads/al...st-piayasa-doeviz-kurlari-bat-dosyasi.168925/

tcmb-doviz.gif


.
tcmbdoviz-1.gif
 
İlginiz için teşekkür ederim hocam.
İyi çalışmalar dileklerimle,kolay gelsin.
 
Tekrar merhaba Evren Bey;

XML işlerine başladığınıza göre, şimdi sıra geldi hafiften XML kod yapısına ..... diye düşündüm. :cool:

Hazır bu konu başlığında forum sitemizde yazılan mesajları ve bazı bilgileri sitenin RSS sayfasından Excel'in XML - Veri AL özelliğini kullanarak almayı incelemişken, bu kez aynı bilgileri VBA kullanarak XML tablosundan veri alınmasına ilişkin bir dosya hazırladım.

İncelemenizden sonra yararlı bulucağınızı düşünüyorum.

Selamlar,

.
 

Ekli dosyalar

Saol hocam,Ben zaten bunun için sormuştum.Şansa RSS oldu.:D
İnceleyecem şimdi.
 
Haluk bey merhaba.
Burada Konuyu oluşturanlarıda sorgulayabilirmiyiz.
Mesela Orion1'in oluşturduğu konuları listele gibi.
Veri çekildikten sonra yaparım ama XML den sorgulamayı anlamak için.
 
Merhaba;

XML kod yapılarında SQL gibi sorgulama seçeneği olmadığından, yine klasik VBA tekniğiyle kestirmeden şöyle bir şey olabilir ....

Kod:
    For i = 0 To Num
        If myList2(i).Text = "Orion1" Then
            Cells(i + 4, 1) = i + 1
            Cells(i + 4, 2) = myList(i).Text
            Cells(i + 4, 3) = myList2(i).Text
            Cells(i + 4, 4) = myList3(i).Text
        End If
    Next

.
 
Merhaba;

XML kod yapılarında SQL gibi sorgulama seçeneği olmadığından, yine klasik VBA tekniğiyle kestirmeden şöyle bir şey olabilir ....

Kod:
    For i = 0 To Num
        If myList2(i).Text = "Orion1" Then
            Cells(i + 4, 1) = i + 1
            Cells(i + 4, 2) = myList(i).Text
            Cells(i + 4, 3) = myList2(i).Text
            Cells(i + 4, 4) = myList3(i).Text
        End If
    Next

.
Anladım hocam.Teşekkür ederim.
Yarında nodechild e bakabilirmiyiz.
 
Zeki Bey, belki kafam karışmış olabilir ama ..... Evren Beyin isteğini XPath ile nasıl karşılayacağımı şu anda bulamadım :confused:

Diğer yandan, Evren Bey; önceki dosyaya alternatif olarak bir de aşağıdakini inceleyebilirsiniz.

.
 

Ekli dosyalar

Zeki Bey; uyarınız için teşekkürlerimi kabul edin lütfen ....

Evren Bey; Zeki Beyin önerisi doğrultusunda XPath kullanarak "Orion1" kullanıcısına ait veriler, ekli dosyadaki kodlarla alınmaktadır.

Dosyada ayrıca, 9 veya daha fazla cevap yazılmış konuları listelemek için kullanılacak tanımlamayı da bilgi amaçlı koydum.


.
 

Ekli dosyalar

Son düzenleme:
Zeki Bey; uyarınız için teşekkürlerimi kabul edin lütfen ....

Evren Bey; Zeki Beyin önerisi doğrultusunda XPath kullanarak "Orion1" kullanıcısına ait veriler, ekli dosyadaki kodlarla alınmaktadır.

Dosyada ayrıca, 9 veya daha fazla cevap yazılmış konuları listelemek için kullanılacak tanımlamayı da bilgi amaçlı koydum.


.
Merhaba.
Haluk beye ve Zeki beye yardımlarından dolayı teşekkür ederim.
Hocam Orion1 listelenen ilk 20 içinde yoksa hata veriyor.Overlof hatası veriyor.Kırmızı renklendirdiğim satırda veriyor.
Kodlar aşağıdadır.
Rich (BB code):
Sub GetData_ExcelWebTr_3()
    'Haluk
    '06/08/2018
  
    Dim XDoc As Object, strURL As String
    Dim myList As Object
    Dim Num As Byte
  
    Range("A4:D100") = ""

    Set XDoc = CreateObject("MSXML2.DOMDocument")
    XDoc.async = False
    XDoc.validateOnParse = False
  
    strURL = "https://www.excel.web.tr/forums/-/index.rss"
    XDoc.Load strURL
  
     'Orion1 isimli kullanıcının mesajlarını listelemek için:
    Set myList = XDoc.SelectNodes("//channel/item[dc:creator='Orion1']")
  
     '9 veya daha fazla cevap yazılmış konuları listelemek için:
    'Set myList = XDoc.SelectNodes("//channel/item[slash:comments>=9]")
    Num = myList.Length - 1
  
    If myList.Length = 0 Then GoTo SafeExit:
  
    For i = 0 To Num
        Cells(i + 4, 1) = i + 1
        Cells(i + 4, 2) = myList(i).SelectSingleNode("title").Text
        Cells(i + 4, 3) = myList(i).SelectSingleNode("dc:creator").Text
        Cells(i + 4, 4) = myList(i).SelectSingleNode("slash:comments").Text
    Next
      
SafeExit:
    Set myList = Nothing
    Set XDoc = Nothing
End Sub
 
Son düzenleme:
Evren Bey; hemen bir altındaki satır ile yer değiştirin ....

Not: 31 No'lu mesaj ekindeki dosya güncellendi.
.
 
Son düzenleme:
Evren Bey; hemen bir altındaki satır ile yer değiştirin ....

Not: 31 No'lu mesaj ekindeki dosya güncellendi.
.
Haluk bey yardımlarınız için tekrar teşekkür ederim.
İyi günler.
 
.......
...
Yarında nodechild e bakabilirmiyiz.

Evren Bey;

Yukarıda 28 No'lu mesajınızda bahsettiğiniz konu ile ilgili olarak da ekteki dosyayı hazırladım...

Bu dosyada, daha önceki dosyada yapılan iş (foruma yazılan son 20 mesaj ve ilgili bilgiler) bu kez ChildNodes özelliği kullanılarak yapılmıştır.

.
 

Ekli dosyalar

Son düzenleme:
Evren Bey;

Yukarıda 28 No'lu mesajınızda bahsettiğiniz konu ile ilgili olarak da ekteki dosyayı hazırladım...

Bu dosyada, daha önceki dosyada yapılan iş (foruma yazılan son 20 mesaj ve ilgili özellikler) bu kez ChildNodes özelliği kullanılarak yapılmıştır.

.
Haluk hocam çok sağolun.Böylece bu konuda hallolmuş oldu.
İyi çalışmalar dilerim.
 
Haluk beyin kodlar üzerinde biraz çalıştım.
Operatör kullanabilirmiyim diye biraz üzerinde çalıştım.Ve aşağıdaki şekilde yapınca oldu.
Kod:
    '3 ve 3 ten büyük,9 ve 9 küçük cevap verilmiş olan cevapların görüntülenmesi.
    Set myList = XDoc.SelectNodes("//channel/item[slash:comments>=3 and slash:comments<=9]")

Kod:
Sub GetData_ExcelWebTr_3()
    'Haluk
    '06/08/2018
    
    Dim XDoc As Object, strURL As String
    Dim myList As Object
    Dim Num As Byte
    
    Range("A4:D100") = ""

    Set XDoc = CreateObject("MSXML2.DOMDocument")
    XDoc.async = False
    XDoc.validateOnParse = False
    
    strURL = "https://www.excel.web.tr/forums/-/index.rss"
    XDoc.Load strURL
    'Hepsini listelemek için
    'Set myList = XDoc.SelectNodes("//channel/item")
    'Orion1 isimli kullanıcının mesajlarını listelemek için:
    'Set myList = XDoc.SelectNodes("//channel/item[dc:creator='Orion1']")
    '7 ve 7 den küçük  cevap yazılmış konuları listelemek için
    'Set myList = XDoc.SelectNodes("//channel/item[slash:comments<=7]")
    '3 ve 3 ten büyük,9 ve 9 küçük cevap verilmiş olan cevapların gösterimi
    Set myList = XDoc.SelectNodes("//channel/item[slash:comments>=3 and slash:comments<=9]")
    If myList.Length = 0 Then GoTo SafeExit
    Num = myList.Length - 1
    
    For i = 0 To Num
        Cells(i + 4, 1) = i + 1
        Cells(i + 4, 2) = myList(i).SelectSingleNode("title").Text
        Cells(i + 4, 3) = myList(i).SelectSingleNode("dc:creator").Text
        Cells(i + 4, 4) = myList(i).SelectSingleNode("slash:comments").Text
    Next
        
SafeExit:
    Set myList = Nothing
    Set XDoc = Nothing
End Sub
 
Son düzenleme:
Geri
Üst