Zavrieť

Porady

XML to EXCEL

Dobrý deň, potreboval by som naimportovať niekoľko XML súborov do excelu.
Súbor XML sa bude napĺňať automaticky do priečinka pričom nepoznám názov súborov. Len cestu.
Jeden súbor viem načítať, len ich musím načítať viacej a automaticky.
Ďakujem
Naposledy upravil Snoophy : 14.01.21 at 10:19 Dôvod: Príloha
Pravidlá a tipy
  • Každý móže napísať len 1 odpoveď. Neskor mozete svoju odpoveď vylepšiť.
  • Odpoveď má priniesť riešenie na otázku, vyvarujte sa hodnotenia otázky.
  • Odpoveď má byť viac o faktoch ako o názoroch.
Dalšie pravidla a tipy
    Ak potrebujete v otázke niečo upresniť, najskôr sa spýtajte na podrobnosti.
    Koncept slúži na uloženie rozpracovanej odpovede, koncept sa zobrazuje len Vám, až kým ho nezverejníte.
    Ak máte podobnú otázku, založte Novú otázku alebo Súvisiacu otázku.
    ❤ Buďte priateľskí ❤
    Sme súčasťou jednej komunity, ktorá si chce vzájomne pomáhať, rozdieľnosť je vítaná ak neubližuje!
    Usporiadať podľa času

    xxn je offline (nepripojený) xxn

    xxn
    Skús nasledujúcu vba procedúru:

    1.) Vytvor si na pracovnej ploche nový folder "\Folder XML" ; ak by si použil iný folder treba prepísať aj "cest =sPath" v kóde...
    2.) Nahraj si do tohto foldera všetky xml ktoré chceš naimportovať
    3.) spusti Excel, otvor v ňom prázdny zošit, spusti VBA (Alt+F11) ; Vo VBA vytvor modul (Inset module) a do neho vlož nasledujúci kód / procedúru.
    To by malo stačiť urobiť raz, potom Ti už modul zostane v Personálnych makrách

    Sub Import_XML()
    Dim wbk As Workbook

    Dim sPath As String
    sPath = "C:\Users\uzivatel\Desktop\Folder XML\" '<< change path. All xml files in <folder XML>
    Dim sFile As String
    sFile = Dir(sPath & "*.xml")

    'pridá sa nový Excel zošit a naimportuje xml
    Do Until sFile = ""
    Set wbk = Workbooks.Add
    ActiveSheet.Name = sFile
    ActiveWorkbook.XmlImport URL:=sPath & sFile, ImportMap:=Nothing, Overwrite:=True, Destination:=[A1]

    ActiveWorkbook.SaveAs sPath & Left(sFile, 13) & ".xlsx"
    ActiveWorkbook.Close
    sFile = Dir()
    Loop
    End Sub

    (pokúšal som sa Ti zaslať jeho kópiu ale Pohoda asi nepustí .bas súbory)

    4.) Spusti kód/procedúru (nastav sa do nej kurzorom a stlač F5 alebo zelenú šipku hore)
    a) tento kód vytvorí pre každé xml nový prázdny excel súbor
    b) naimportuje doň xml
    c) nazve a uloží excel do toho istého foldera

    PS: Je tam ale nejaký problém s prvým xml. Pozri či je správna jeho xml štruktúra. To druhé zbehlo OK.
    pred importom.jpg  
    po importe.jpg  
    1/1

    elninoslov je teraz online elninoslov

    elninoslov
    No aspoň 2 tie XML súbory na skúšku, aby sa Vám na to mohol niekto pozrieť, sú kde? Aj s príkladom požadovaného výsledku...

    EDIT: 15.1.2021 0:53
    Budete potrebovať upraviť tento PowerQuery. Padá totiž na tom, že QUnit obsahuje aj netabuľku.
    https://blog.crossjoin.co.uk/2014/05...n-power-query/
    Naposledy upravil elninoslov : 15.01.21 at 00:53
    Snoophy OK, pridal som...prílohu
    elninoslov A ako sa dá podľa toho urobiť to, že importuje viac XML naraz, a tie XML nemajú rovnakú štruktúru, a v stĺpcoch nie sú položky rovnakého typu? Ako som písal, že v stĺpci je aj obyčajný textový údaj, ale zároveň v iných riadkoch Tabuľka na ďalšie rozbalenie. Niekde môže byť pod uzlom niekoľko hodnôt na rozbalenie, a inde ten istý uzol nemusí mať pod sebou nič, alebo nedajbože nemusí existovať.
    frenkacik Tak to uz len asi naprogramovat, alebo nejaky nastroj napr: https://www.topbestalternatives.com/...cel-converter/

    Porady, ktoré by vás mohli zaujímať

    Prihláste sa a sledujte len tie Porady, ktoré Vás zaujímajú.