Snoophy
14.01.21,07:33
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
elninoslov
14.01.21,07:28
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/21/expanding-all-columns-in-a-table-in-power-query/
Snoophy
14.01.21,08:20
OK, pridal som...prílohu
frenkacik
18.01.21,09:44
elninoslov
18.01.21,15:13
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
18.01.21,18:10
Tak to uz len asi naprogramovat, alebo nejaky nastroj napr: https://www.topbestalternatives.com/best-free-xml-to-excel-converter/
xxn
23.04.21,07:28
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
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.