• DİKKAT

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

UBL Dosyadan veri alma

  • Konbuyu başlatan Konbuyu başlatan umit1907
  • Başlangıç tarihi Başlangıç tarihi

umit1907

Altın Üye
Katılım
9 Mayıs 2007
Mesajlar
231
Excel Vers. ve Dili
365 TR
Merhabalar,

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

Ekli dosyalar

  • ubl.rar
    ubl.rar
    42.4 KB · Görüntüleme: 18
Merhabalar,
Sistemi biraz çözdüm gibi ama yinede ubl dosyasındaki hangi alanlardan veri geliyor anlayamadım yardımcı olabilirmisiniz.
 

Ekli dosyalar

:( @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.
 
sadece merak ettiğim için soruyorum
excel web tr ile excel desteklerdekiler ile aranızda bir sorun mu var ?
 
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 ?
 
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.
 
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.
 
@NADİR YILDIZ yok abi zannetmiyorum yöneticileri felanda öyle insanlar değil. Burdaki üstadlarda aynı şekilde hiç kimseden birşey görmedim ben.
 
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.
 
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
 
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.
 
tamam üstad konu anlaşılmıştır.
teşekkürler.siz yerden göğe haklısınız.

iyi çalışmalar
 
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:
Geri
Üst