Ecrire dans un XML dont la structure est connue

Rockit72

XLDnaute Nouveau
Bonjour,
Je voudrais exporter les donner de ma cellulle vers un fichier XML existant.
Comment puis-je faire cela avec VBA.

Exemple de mon XML:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://www.w3.org/2001/XMLSchema" version="4.5">
<provider>my provider</provider>
<language>fr-FR</language>
<video>
<type>film</type>
<subtype>feature</subtype>
<vendor_id>123456</vendor_id>
<country>US</country>
<original_spoken_locale>en-US</original_spoken_locale>
<title>my title</title>
<synopsis>bla bla bla....</synopsis>
<production_company>this production company</production_company>
<copyright_cline>this copyright</copyright_cline>
<theatrical_release_date>1970-05-20</theatrical_release_date>
<genres>
<genre>Drama</genre>
</genres>
</video>
</package>
Le but etant d'avoir une cellule represantant chacun des champs de mon xml et ensuite pouvoir ecrire la valeur de la cellule dans le fichier XML.

Comment pourris faire cela avec une macro VBA.
Merci d'avance de votre aide.
 

Grand Chaman Excel

XLDnaute Impliqué
Re : Ecrire dans un XML dont la structure est connue

Bonjour Rockit72 et bienvenue sur le forum,

Je ne maîtrise pas encore cet aspect, mais voici une piste qui pourrait t'aider. Sur le lien suivant, tu pourras télécharger un (excellent!) add-in fait par Dick Kusleika qui permet de générer des données aléatoires et qui utilise justement les fichiers XML.

Je n'ai pas encore eu l'occasion de décortiquer le code à fond mais c'est sur ma liste de choses à faire...

Daily Dose of Excel » Blog Archive » Generate Sample Data

A+
 
G

Guest

Guest
Re : Ecrire dans un XML dont la structure est connue

Bonjour,

S'il ne s'agit que d'écrire des valeurs de cellules dans un petit XML quelque chose comme ci-dessous devrait suffire.

Utilisation: DoXml "C:\chemin\NomDufichier.xml"
Attention NomDuFichier.xml sera écrasé s'il existe.
Le fichier sera écrit en Utf-8.

On suppose que les entête de colonne sont sur la ligne 1 de la feuille Feuil1 et les données de A à N de la ligne 2
M2 doit être une date
Aucun contrôle n'est fait sur le contenu des données

Code:
Sub DoXML(CheminCompletVerLeFichier As String)
    Dim StrXml As String
    With Sheets("Feuil1")
        StrXml = "<?xml version=""1.0"" encoding=""utf-8""?>" & vbCrLf & _
                 "<package xmlns=""http://www.w3.org/2001/XMLSchema"" version=""4.5"">" & vbCrLf & _
                 "<provider>" & .Range("A2") & "</provider>" & vbCrLf & _
                 "<language>" & .Range("B2") & "</language>" & vbCrLf & _
                 "<video>" & vbCrLf & _
                 "<type>" & .Range("D2") & "</type>" & vbCrLf & _
                 "<subtype>" & .Range("E2") & "</subtype>" & vbCrLf & _
                 "<vendor_id>" & .Range("F2") & "</vendor_id>" & vbCrLf & _
                 "<country>" & .Range("G2") & "</country>" & vbCrLf & _
                 "<original_spoken_locale>" & .Range("H2") & "</original_spoken_locale>" & vbCrLf & _
                 "<title>" & .Range("I2") & "</title>" & vbCrLf & _
                 "<synopsis>" & .Range("J2") & "</synopsis>" & vbCrLf & _
                 "<production_company>" & .Range("K2") & "</production_company>" & vbCrLf & _
                 "<copyright_cline>" & .Range("L2") & "</copyright_cline>" & vbCrLf & _
                 "<theatrical_release_date>" & Format(.Range("M2"), "yyyy-mm-dd") & "</theatrical_release_date>" & vbCrLf & _
                 "<genres>" & vbCrLf & _
                 "<genre>" & .Range("N2") & "</genre>" & vbCrLf & _
                 "</genres>" & vbCrLf & _
                 "</video>" & vbCrLf & _
                 "</package>"
    End With
    
     
   Dim AdoStream As Object
    
    Set AdoStream = CreateObject("ADODB.Stream")
    AdoStream.Open
    AdoStream.Type = 2
    AdoStream.Position = 0
    AdoStream.Charset = "utf-8"
    AdoStream.WriteText StrXml
    AdoStream.SaveToFile CheminCompletVerLeFichier, 2
    AdoStream.Close
    Set AdoStream = Nothing
End Sub

A+
 
Dernière modification par un modérateur:

JNP

XLDnaute Barbatruc
Re : Ecrire dans un XML dont la structure est connue

Bonsoir le fil :),
Tu parles de "modifier" un fichier XML...
Si c'est l'enregistrer, tu peux effectivement utiliser la méthode d'Hasco (que je salue ;)).
Tu dois pouvoir aussi (de mémoire) enregistrer directement depuis Excel à condition d'avoir le SP3 pour la version 2003 (sous 2007 et 2010, c'est beaucoup plus facile :rolleyes:), il me semble qu'il suffit de lui procurer le mapping du fichier :p...
Si tu veux vraiment gérer le XML (et vérifier sa conformité), tu trouveras sur le Wiki de MichelXLD (assez bas dans le post...) un certain nombre de macro pour le faire :D.
Enfin, sinon, personnellement, je préfère passer par du Full Texte, mais pour celà, il me faudrait un peu plus de renseignement sur "avant" et "après" :rolleyes:...
Bonne soirée :cool:
 

Statistiques des forums

Discussions
311 720
Messages
2 081 913
Membres
101 837
dernier inscrit
Ugo