Export XML list of lists
Bonjour,
Je me permet de créer ce sujet après avoir poster dans un sujet existant pour une meilleure visibilité et aussi parce que je ne suis pas sûr que le problème soit le même.
J'ai fais pas mal de recherches sur le net et ici même sans trouver de réponse mais quelques pistes.
Voici mon problème, je souhaitais me servir d'excel afin d'éditer des fichiers xml plus confortablement qu'avec un éditeur de txt.
J'ai donc tester avec un fichier XML simple du type
<parutions>
<item>
<nom>nom de parution</nom>
<img>image</img>
</item>
<item>
<nom>nom de parution</nom>
<img>image</img>
</item>
[...]
</parutions>j'importe donc mon fichier xml via le panneau source xml et crée donc une map automatiquement, map l'ensemble à la feuille excel, importe les données du même fichier xml toujours via le menu développeur, édite les données, exporte mon fichier (menu développeur) et ça marche.
Je me dis cool, passons aux choses sérieuses...
J'importe un autre fichier dans un nouveau classeur qui ressemble à ça :
<shops>
<pays name="ALLEMAGNE">
<item name="nom du shop" link="lien du shop" lat="latitude" lng="longitude">
<adr>adresse du shop</adr>
<tel>Tel du shop</tel>
</item>
</pays>
<pays name="BELGIQUE">
<item name="nom du shop" link="" >
<adr>adresse du shop</adr>
<tel>Tel du shop</tel>
</item>
<item name="nom du shop" link="lien du shop">
<adr>adresse du shop</adr>
<tel>Tel du shop</tel>
</item>
</pays>
<pays name="ETATS-UNIS">
<item name="nom du shop" link="" >
<adr>adresse du shop</adr>
<tel>Tel du shop</tel>
</item>
<item name="nom du shop" link="lien du shop">
<adr>adresse du shop</adr>
<tel>Tel du shop</tel>
</item>
<main name="nom de la chaine" link="texte lien de la chaine" linkref="lien réel de la chaine">
<item name="nom du shop" lat="latitude" lng="longitude">
<adr>adresse du shop</adr>
<tel>Tel du shop</tel>
</item>
<item name="nom du shop" lat="latitude" lng="longitude">
<adr>adresse du shop</adr>
<tel>Tel du shop</tel>
</item>
</main>
</pays>
</shops>
Le fichier est un peu plus complexe (attributs, listes dans des listes ...)
Mêmes manips que précédemment, tout se passe bien, j'ai mes données dans un tableau un peu brouillon mais tout de même lisible quand on connait la hiérarchie du fichier xml... Mais grosse déception lors de l'export, excel ne peut exporter un fichier dont la map contient des listes de listes...
J'ai regarder sur le site office et c'est bien mentionné comme une limitation.
Je cherche donc à savoir s'il est possible via un script VBA d'exporter un fichier xml complexe comme celui-ci.
J'ai cherché sur le net et j'ai trouvé des exemples d'export de fichiers xml simples, par exemple :
Function XMLwithNS() As String
Dim xml As String
Dim res As XlXmlExportResult
res = _
ActiveWorkbook.XmlMaps(mapname).ExportXml(xml)
If res = xlXmlExportSuccess Then
XMLwithNS = Replace(xml, _
basicroot, fullroot, 1, 1)
Else
XMLwithNS = ""
End If
End FunctionLa fonction qui modifie uniquement le namespace du fichier, enfin je crois
Sub ExportXMLtoFile()
Dim bu As String, period As String
Dim xmlfilename As String
Dim xml As String
bu = Range("BU").Value
period = Range("Period").Value
xmlfilename = basename + "_" + bu + "_" + _
period + ".xml"
Dim fso As New Scripting.FileSystemObject
Dim ts As Scripting.TextStream
ChDir ActiveWorkbook.Path
MsgBox "Current directory is " & CurDir
xml = XMLwithNS
If Len(xml) > 0 Then 'okay
Set ts = fso.CreateTextFile(xmlfilename)
ts.Write XMLwithNS
ts.Close
MsgBox "Exported XML to file " & xmlfilename
Else 'XML did not validate
MsgBox "XMl does not validate; export aborted"
End If
End SubLa routine qui exporte le fichier.
Mais ici le xml est basique, et visiblement, c'est excel qui fait le boulot d'export via une map valide...
Est-il possible "d'aider" excel à s'y retrouver dans une map xml complexe à l'aide de VBA ?
Si oui, pouvez-vous m'orienter car je ne connais pas le vba mais je suis familier d'autres langages de programmation.
Merci d'avoir pris le temps de me lire.
Personne ne peut m'aider ?