UBL Dosyadan veri alma

umit1907

Altın Üye
Katılım
9 Mayıs 2007
Mesajlar
226
Excel Vers. ve Dili
365 TR
Altın Üyelik Bitiş Tarihi
18-04-2029
Merhabalar,

Ekteki UBL fatura gibi klasörde 300-400 tane faturamız var bu UBL dosyasındaki verileri toplu olarak excele çekebilirmiyiz.
 

Ekli dosyalar

  • 42.4 KB Görüntüleme: 18

umit1907

Altın Üye
Katılım
9 Mayıs 2007
Mesajlar
226
Excel Vers. ve Dili
365 TR
Altın Üyelik Bitiş Tarihi
18-04-2029
:( @veyselemre abi kusura bakma kodu bulduğum gibi paylaştım. abi bu kod yapısında XML'deki verileri neye göre hangi adlara göre alıyoruz.
 

NADİR YILDIZ

Altın Üye
Katılım
7 Ocak 2006
Mesajlar
1,341
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
09-02-2026
sadece merak ettiğim için soruyorum
excel web tr ile excel desteklerdekiler ile aranızda bir sorun mu var ?
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Hangi alanları almak istiyorsunuz. Fatura kalemleri gerekli mi? SadeceKDV matrahlarının göre kümüle dökümü mü gerekli, fatura bilgileri isim, adres, vno, tcno, neler gerekli ?
 

umit1907

Altın Üye
Katılım
9 Mayıs 2007
Mesajlar
226
Excel Vers. ve Dili
365 TR
Altın Üyelik Bitiş Tarihi
18-04-2029
Merhabalar Nadir Bey Yok kimseyle bir sorunum yok
 

umit1907

Altın Üye
Katılım
9 Mayıs 2007
Mesajlar
226
Excel Vers. ve Dili
365 TR
Altın Üyelik Bitiş Tarihi
18-04-2029
Merhabalar Veysel Abi,
faturayı kesen firma, Firmanın vergi nosu (Yani Faturayı kesenin bilgileri ve kesilen firmanın bilgileri şeklinde ) çok teşekkür ederim abi.
 

NADİR YILDIZ

Altın Üye
Katılım
7 Ocak 2006
Mesajlar
1,341
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
09-02-2026
yok ümit bey size demedim zaten

genel olarak sanki geçmişe dayanan bazı sorunlar var gibi
ben orada da soru soruyorum.
hatta burada olan bazı arkadaşlarda orada görüyorum.
orda olanları burada görüyorum
onlarda excel web tr site isminden pek hoşlanmıyorlar.
 

umit1907

Altın Üye
Katılım
9 Mayıs 2007
Mesajlar
226
Excel Vers. ve Dili
365 TR
Altın Üyelik Bitiş Tarihi
18-04-2029
@NADİR YILDIZ yok abi zannetmiyorum yöneticileri felanda öyle insanlar değil. Burdaki üstadlarda aynı şekilde hiç kimseden birşey görmedim ben.
 

NADİR YILDIZ

Altın Üye
Katılım
7 Ocak 2006
Mesajlar
1,341
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
09-02-2026
haklısınız veysel bey
siz bir emek vermiş uğraşmışsınız kafa patlatmışsınız
size ait bir çalışmayı kendininmiş gibi çözüm sunması hiç şık olmamış.
bu konuda sizinle sonuna kadar beraberim.
altına imza atarım sakın beni yanlış anlamayın veysel lütfen
bunu kim yaparsa yapsın
falancadan filancadan alıntı yaptım dese tamam.oda izin alarak belki
burası yada oradan yana taraf olduğum aklınıza gelmesin sakın.
benim sorduğum tamamıyla iki site arasında gizli saklı bir hava var onu merak ettim
 

NADİR YILDIZ

Altın Üye
Katılım
7 Ocak 2006
Mesajlar
1,341
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
09-02-2026
bende düşünmek istemiyorum zaten
her iki sitedende birçok öğrendiğim ve yardım aldığım üstatlar var.
 

NADİR YILDIZ

Altın Üye
Katılım
7 Ocak 2006
Mesajlar
1,341
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
09-02-2026
veysel üstad ümit bey konuya başka yerden girdim.
kusura bakmayın.
veysel beyin çözüm önerisini bende görmek isterim.
benimde yararlanabileceğim bir çalışma
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
haklısınız veysel bey
siz bir emek vermiş uğraşmışsınız kafa patlatmışsınız
size ait bir çalışmayı kendininmiş gibi çözüm sunması hiç şık olmamış.
bu konuda sizinle sonuna kadar beraberim.
altına imza atarım sakın beni yanlış anlamayın veysel lütfen
bunu kim yaparsa yapsın
falancadan filancadan alıntı yaptım dese tamam.oda izin alarak belki
burası yada oradan yana taraf olduğum aklınıza gelmesin sakın.
benim sorduğum tamamıyla iki site arasında gizli saklı bir hava var onu merak ettim
bende düşünmek istemiyorum zaten
her iki sitedende birçok öğrendiğim ve yardım aldığım üstatlar var.
Bende eskiden gelen alışkanlık excel.web.tr ve excelvba . net takip ediyorum. Diğerlerini takip etmiyorum. Üye bile değilim aralarında bir sorun olduğunu da bilmiyorum. Yalnız Ömer Bey siteyi açtıktan sonra burada oranın reklamını yapıp yazdığı cevaplarda özellikle oraya yönlendirmeye çalışması garibime gitmişti. Hatta bir müddet de burada ses çıkarılmadı, böyle davranışlarına, daha sonra banlandı diye hatırlıyorum. Hatta geçenlerde excelvba . net de bir soruda verdiği cevap için eklediği dosyanın içerisine destek için sizleride exceldestek sitesine bekleriz diye bir not eklemiş, benim garibime gidiyor bu davranışlar etik değil. Site açabilirsin. İmza satırında reklamını da yapabilirsin buna müsade edilmiş Ama sen gel benim dükkanımın önündeki müşterileri kendi dükkanına çekmeye çalış bana yakışıksız geliyor.
 

NADİR YILDIZ

Altın Üye
Katılım
7 Ocak 2006
Mesajlar
1,341
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
09-02-2026
tamam üstad konu anlaşılmıştır.
teşekkürler.siz yerden göğe haklısınız.

iyi çalışmalar
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Hatalar olabilir, çok KDV li fatura örneğinde de test etmek gerekir. Fatura kalemleri dikkate alınmadan vergi bilgileri alınmıştır, örneğe göre...
Kod:
Sub XML_oku()
    Dim fso As Object, myFolder As Object, myFile As Object
    Dim domObj As Object, PartyIdentification As Object, ID As Object
    Dim sat&, alanlar(), basliklar(), i&, sut&, tuzel As Boolean, person As Object
    Dim tedarikci As Object, party As Object, musteri As Object, toplamlar As Object
    Dim taxTotal As Object, vergiToplam As Object, mToplam As Object, gToplam As Object
    Dim taxSubtotal As Object, tax As Object, oran&
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set domObj = CreateObject("Msxml2.DOMDocument.6.0")

    Cells.ClearContents: sat = 3
    Set myFolder = fso.getfolder(ThisWorkbook.Path)
    alanlar = Array("cbc:ProfileID", "cbc:ID", "cbc:IssueDate", "cbc:InvoiceTypeCode")
    Cells(1, 5).Value = "TEDARİKÇİ"
    Cells(1, 7).Value = "MÜŞTERİ"
    Cells(1, 10).Value = "%0"
    Cells(1, 12).Value = "%1"
    Cells(1, 14).Value = "%8"
    Cells(1, 16).Value = "%18"
    Cells(1, 18).Value = "TOPLAM"
    Cells(1, 19).Value = "TOPLAM"
    Cells(1, 20).Value = "GENEL"
    basliklar = Array("Fatura Türü", "ID", "Tarih", "Tür", "VN/TCKN", "ADI", "VN/TCKN", "ADI", _
                      "Para Brm.", "MATRAH", "KDV", "MATRAH", "KDV", "MATRAH", "KDV", "MATRAH", "KDV", "MATRAH", "KDV", "TOPLAM")
    For i = 0 To UBound(basliklar)
        Cells(2, i + 1).Value = basliklar(i)
    Next i
    For Each myFile In myFolder.Files

        If fso.GetExtensionName(myFile) = "xml" Then
            domObj.Load (myFile)

            For i = 0 To 3
                Cells(sat, i + 1).Value = domObj.getElementsByTagName(alanlar(i))(0).Text
            Next i

            Set tedarikci = domObj.getElementsByTagName("cac:AccountingSupplierParty")(0)
            Set party = tedarikci.getElementsByTagName("cac:Party")(0)
            For Each ID In party.getElementsByTagName("cbc:ID")
                If ID.getAttribute("schemeID") = "VKN" Or ID.getAttribute("schemeID") = "TCKN" Then
                    Cells(sat, 5).NumberFormat = "@"
                    Cells(sat, 5).Value = ID.Text
                    If ID.getAttribute("schemeID") = "VKN" Then tuzel = True Else tuzel = False
                    Exit For
                End If
            Next ID

            If tuzel Then
                Cells(sat, 6).Value = party.getElementsByTagName("cac:PartyName")(0).Text
            Else
                Set person = party.getElementsByTagName("cac:Person")(0)
                Cells(sat, 6).Value = person.FirstChild.Text & " " & _
                                      person.LastChild.Text
            End If

            Set musteri = domObj.getElementsByTagName("cac:AccountingCustomerParty")(0)
            Set party = musteri.getElementsByTagName("cac:Party")(0)

            For Each ID In party.getElementsByTagName("cbc:ID")
                If ID.getAttribute("schemeID") = "VKN" Or ID.getAttribute("schemeID") = "TCKN" Then
                    Cells(sat, 7).NumberFormat = "@"
                    Cells(sat, 7).Value = ID.Text
                    If ID.getAttribute("schemeID") = "VKN" Then tuzel = True Else tuzel = False
                    Exit For
                End If
            Next ID

            If tuzel Then
                Cells(sat, 8).Value = party.getElementsByTagName("cac:PartyName")(0).Text
            Else
                Set person = party.getElementsByTagName("cac:Person")(0)
                Cells(sat, 7).Value = person.FirstChild.Text & " " & _
                                      person.LastChild.Text
            End If

            Set taxTotal = domObj.getElementsByTagName("cac:TaxTotal")(0)
            Set vergiToplam = taxTotal.getElementsByTagName("cbc:TaxAmount")(0)

            Cells(sat, 9).Value = vergiToplam.getAttribute("currencyID")

            Set taxSubtotal = taxTotal.getElementsByTagName("cac:TaxSubtotal")
            For Each tax In taxSubtotal
                oran = tax.getElementsByTagName("cbc:Percent")(0).Text
                Select Case oran
                    Case 0: sut = 10
                    Case 1: sut = 12
                    Case 8: sut = 14
                    Case 18: sut = 16
                End Select
                Cells(sat, sut).Value = tax.getElementsByTagName("cbc:TaxableAmount")(0).Text
                Cells(sat, sut + 1).Value = tax.getElementsByTagName("cbc:TaxAmount")(0).Text
            Next
            
            Set toplamlar = domObj.getElementsByTagName("cac:LegalMonetaryTotal")(0)
            Set mToplam = toplamlar.getElementsByTagName("cbc:TaxExclusiveAmount")(0)
            Set gToplam = toplamlar.getElementsByTagName("cbc:TaxInclusiveAmount")(0)
            Cells(sat, 18).Value = mToplam.Text
            Cells(sat, 19).Value = vergiToplam.Text
            Cells(sat, 20).Value = gToplam.Text
            sat = sat + 1
        End If
    Next
    Columns.AutoFit
    Set fso = Nothing: Set myFolder = Nothing: Set domObj = Nothing
    Set ID = Nothing: Set person = Nothing: Set tedarikci = Nothing
    Set party = Nothing: Set musteri = Nothing: Set toplamlar = Nothing
    Set taxTotal = Nothing: Set vergiToplam = Nothing: Set mToplam = Nothing
    Set taxSubtotal = Nothing: Set gToplam = Nothing

End Sub
 
Son düzenleme:
Üst