.xml biçimli dosyadan veri almak.

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Selamlar,

.xml uzantılı bir belgeden, çalışma sayfası üzerindeyken, Veri/XML/AL seçeneklerini kullanarak, verileri çalışma sayfasında gösterebiliyoruz. (Eklediğim örnek dosyayı deneyebilirsiniz.)

xml dosyası içindeki verileri, çalışma sayfasını hiç kullanmadan form üzerinde, listbox veya listview kullanarak (başka bir şekilde de olabilir), listeletmek ve xml dosyasının içideki herhangi bir belirlenmiş bölümün değerini textbox içinde göstermek istiyorum. Belirlenmiş bölüme örnek verecek olursak:

<ad>MAHMUT</ad> kısmındaki <ad> bölümünün değeri olan MAHMUT ismini, textbox içine doğrudan doğruya alabilmek istiyorum.

Bir örnek dosya ekledim. Yol gösterecek arkadaşlara şimdiden teşekkür ediyorum. İyi çalışmalar.
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Merhaba,

A&#351;a&#287;&#305;da benim kulland&#305;&#287;&#305;m &#231;al&#305;&#351;man&#305;n kodlar&#305;n&#305; bulabilirsiniz.

Burada XML dosyas&#305;n&#305; istedi&#287;im &#351;ekilde excel sayfas&#305;na aktarabiliyorum.
Kodlar&#305; kendinize g&#246;re uyarlayarak isterseniz direkt Textbox'da, isterseniz herhangi bir h&#252;creye aktararak buradan textbox'a y&#252;kleyebilirsiniz.
&#214;nemli olan xml tablosunda verinin yerini iyi belirleyebilmektir.

NOT: FORMATCELL benim h&#252;cre format&#305;n&#305; ayarlamak i&#231;in yapt&#305;&#287;&#305;m kullan&#305;c&#305; tan&#305;ml&#305; bir fonksiyondur.Bu sat&#305;rlar&#305; dikkate almayabilirsiniz.

Kod:
[color=blue]Sub XMLFileLoad()[/color]
Dim xmlDoc As New MSXML2.DOMDocument40
Dim xmlFile As String
Dim Loaded As Boolean
Dim toplamkisi, kisi, a, k, i, s As Long
Dim Tablo As Variant
On Error Resume Next
'****************************************************************************
    xmlDoc.async = False
    xmlFile = "C:\Deneme\ornek.XML"
    	Loaded = xmlDoc.Load(xmlFile)
    If Loaded = False Then
    	MsgBox "Dosya Bulunamad&#305;."
	Exit Sub
    End If
    Set Tablo = xmlDoc.childNodes(1).childNodes
'****************************************************************************
[color=green]'&#304;&#350;YER&#304;[/color]
[e2] = Tablo(0).Attributes.getNamedItem("ISYERISICIL").Text
[h2] = Tablo(0).Attributes.getNamedItem("KONTROLNO").Text
[e3] = Tablo(0).Attributes.getNamedItem("ISYERIARACINO").Text
[e4] = Tablo(0).Attributes.getNamedItem("ISYERIUNVAN").Text
[e5] = Tablo(0).Attributes.getNamedItem("ISYERIADRES").Text
[e6] = Trim(Tablo(0).Attributes.getNamedItem("ISYERIVERGINO").Text)
[color=green]'BORDRO[/color]
[e8] = Tablo(1).Attributes.getNamedItem("DONEMYIL").Text
[e9] = Tablo(1).Attributes.getNamedItem("DONEMAY").Text
[e10] = Tablo(1).Attributes.getNamedItem("BELGEMAHIYET").Text
'****************************************************************************
[color=green]'BILDIRGELER[/color]
    For i = 0 To Tablo.Length - 1
        [color=green]'SIGORTALILAR[/color]
        toplamkisi = toplamkisi + kisi
        kisi = Tablo(i).childNodes(0).childNodes.Length - 1
        For k = 0 To kisi
            s = toplamkisi + 14 + k
            Cells(s, 2).Value = s - 13
            Cells(s, 3).Value = Tablo(i).Attributes.getNamedItem("BELGETURU").Text
            Cells(s, 4).Value = Tablo(i).Attributes.getNamedItem("KANUN").Text
            Cells(s, 5).Value = FORMATCELL(Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("SIGORTALISICIL").Text, False, 13)
            Cells(s, 6).Value = Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("TCKNO").Text
            Cells(s, 7).Value = Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("AD").Text
            Cells(s, 8).Value = Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("SOYAD").Text
            Cells(s, 9).Value = Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("ILKSOYAD").Text
                
                Cells(s, 10).Value = FORMATCELL(Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("PEK").Text, True, 18)
                If Cells(s, 10).Value = "" Then Cells(s, 10).Value = "000000000000000.00"
                Cells(s, 11).Value = FORMATCELL(Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("GUN").Text, False, 2)
                If Cells(s, 11).Value = "" Then Cells(s, 11).Value = "00"
                Cells(s, 12).Value = FORMATCELL(Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("GIRISGUN").Text, False, 4)
                If Cells(s, 12).Value = "" Then Cells(s, 12).Value = "0000"
                Cells(s, 13).Value = FORMATCELL(Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("CIKISGUN").Text, False, 4)
                If Cells(s, 13).Value = "" Then Cells(s, 13).Value = "0000"
                Cells(s, 14).Value = FORMATCELL(Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("UCRETLIIZINGUN").Text, False, 2)
                If Cells(s, 14).Value = "" Then Cells(s, 14).Value = "00"
                Cells(s, 15).Value = FORMATCELL(Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("UIPEK").Text, True, 11)
                If Cells(s, 15).Value = "" Then Cells(s, 15).Value = "00000000.00"
                Cells(s, 16).Value = FORMATCELL(Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("EKSIKGUNNEDENI").Text, False, 2)
                If Cells(s, 16).Value = "" Then Cells(s, 16).Value = "00"
                Cells(s, 17).Value = FORMATCELL(Tablo(i).childNodes(0).childNodes(k).Attributes.getNamedItem("ISTENCIKISNEDENI").Text, False, 2)
                If Cells(s, 17).Value = "" Then Cells(s, 17).Value = "00"
                Application.StatusBar = "Aktar&#305;lan Kay&#305;t : " & s - 13
        Next k
    Next i
    Set Tablo = Nothing
'****************************************************************************
MsgBox xmlFile & " Dosyas&#305;ndan" & vbCr & vbCr & "T&#252;m Bilgiler Aktar&#305;ld&#305;." & vbNewLine & vbNewLine & "Toplam : " & s - 13 & " Ki&#351;i." & vbNewLine & vbNewLine & "L&#252;tfen Kontrol Ediniz...", vbCritical + vbDefaultButton1 + vbOKOnly, "UYARI"
[c14].Select
Application.StatusBar = ""
'****************************************************************************
[color=red]'Referanslardan Microsoft XML ?.? se&#231;ili olmal&#305;d&#305;r.[/color]
[color=blue]End Sub[/color]
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Sayın Ripek, ilgilendiğiniz için teşekkür ederim. Verdiğiniz kodları kendi belgemde denedim; ancak 'Dosya Bulunamadı' iletisi çıkıyor karşıma. Galiba xml yüklemesini yapamıyor. Gerekli referansı ekledim. (Microsoft XML 5.0)

Eğer mümkünse, sizin kullandığınız xml dosyasını ornek olarak ekleyebilir misiniz?
 

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

S&#246;z konusu XML dosyan&#305;z&#305; bilgisayarda D:\TestFolder\ornek.xml olarak yerle&#351;tirdikten sonra, a&#351;a&#287;&#305;daki kodu deneyebilirsiniz.

Kod:
Sub Test()
    Dim URL As String
    Dim IE As Object
    Dim HTML_Div As Object
    URL = "D:\TestFolder\ornek.xml"
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Navigate URL
    Do Until IE.readyState = 4: DoEvents: Loop
    Set HTML_Div = IE.document.getElementsByTagName("div").Item(17)
    RetVal = Replace(Replace(HTML_Div.innertext, "<ad>", Empty), "</ad>", Empty)
    MsgBox RetVal
    Set HTML_Div = Nothing
    Set IE = Nothing
End Sub
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Arkadaşlar, hepinize çok teşekkür ederim. Yardımlarınız çok makbule geçti, tekrar tekrar çok sağ olun.
 
Üst