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

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
RSS den excel ile veri çekme işlemi Tamamdır. :LOL::LOL:(y)
 

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

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
İlginiz için teşekkür ederim hocam.
İyi çalışmalar dileklerimle,kolay gelsin.
 

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
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

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Saol hocam,Ben zaten bunun için sormuştum.Şansa RSS oldu.:D
İnceleyecem şimdi.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
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.
 

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
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
.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
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.
 

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
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

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
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:

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
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:

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
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:

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
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.
 

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
.......
...
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:

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
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.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
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:
Üst