2 pièce(s) jointe(s)
Génération Fichier XML par données Excel (en VBA)
Bonjour à tous,
Je me tourne vers vous car je ne sais pas résoudre mon problème malgré mes recherches intensives sur le net.
J'ai créé il y a quelques mots du code VBA qui permet de récupérer des données de cellules Excel pour en générer un fichier XML encodé en iso-8859-1
Cela marchait très bien jusqu'à hier où 2 lignes supplémentaires ont été ajoutées au fichier source Excel et cela me génère une erreur sur l'enregistrement du fichier XML.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| Sub Import_XML()
Const XML_NAMESPACE_ATTR As String = "xmlns"
Const XML_NAMESPACE_VALUE As String = "https://www.of.moncompteformation.gouv.fr"
Dim Doc_XML As Object 'Va nous permettre de créer le XML
Dim Root As Object '... de créer la racine du XML
Dim Node As Object '... de créer les noeuds
Dim Chemin As String 'Chemin de sauvegarde
'pour indenter le code XML
Dim rdr As Object
Dim wrt As Object
Dim oStream As Object
'Création du XML
Set Doc_XML = CreateObject("MSXML2.DOMDocument")
'Ajout des données d'encodage/etc...
Set Node = Doc_XML.CreateProcessingInstruction("xml", "version=""1.0"" encoding=""iso-8859-1""")
'Ajout des données au fichier
Doc_XML.Appendchild Node
'Remise à zéro du noeud
Set Node = Nothing
'Création d'une racine
Set Root = Doc_XML.CreateElement("lheo")
Doc_XML.Appendchild Root
Doc_XML.DocumentElement.setAttribute XML_NAMESPACE_ATTR, XML_NAMESPACE_VALUE
Set Node = Doc_XML.CreateElement("offres")
'Ajout de la racine au XML
Root.Appendchild Node
'génération fichier XML
TraiterSessions PreparerDonnees(Doc_XML, Node)
'-- Indenter le fichier créé
'Set rdr = CreateObject("MSXML2.SAXXMLReader")
'Set wrt = CreateObject("MSXML2.MXXMLWriter")
'Set oStream = CreateObject("ADODB.STREAM")
'oStream.Open 'Ouverture objet stream..
'oStream.Charset = "ISO-8859-1"
'
'wrt.indent = True
'wrt.Encoding = "ISO-8859-1"
'wrt.Output = oStream ' "Connexion" de l'objet Writer à l'objet Stream
'Set rdr.contentHandler = wrt
'Set rdr.dtdHandler = wrt
'Set rdr.errorHandler = wrt
'rdr.putProperty "http://xml.org/sax/properties/lexical-handler", wrt
'rdr.putProperty "http://xml.org/sax/properties/declaration-handler", wrt
'Print Doc_XML
'rdr.Parse Doc_XML
'wrt.flush
'Doc_XML.Save ThisWorkbook.Path & "\" & SIRET & "_CatalogueM2i.xml"
'Sauvegarde
Chemin = ThisWorkbook.Path & "\ImportXML_EDOF.xml" 'Chemin de sauvegarde + Nom du fichier
Doc_XML.Save Chemin
'oStream.SaveToFile ThisWorkbook.Path & "\" & SIRET & "_CatalogueM2i.xml", 2
'Libération des objets
'Set wrt = Nothing
'Set rdr = Nothing
'Set oStream = Nothing
Set Node = Nothing
Set Root = Nothing
Set Doc_XML = Nothing
MsgBox "Fin de la génération du fichier XML que vous trouverez à l'emplacement :" & vbCrLf & _
ThisWorkbook.Path & "\" & SIRET & "_CatalogueM2i.xml", vbInformation, "Fin de la génération"
End Sub |
Initialement, ça bug sur le .Parse (pièce jointe nommée Erreur init.png) et en le mettant en commentaire, l'erreur d’enregistrement (.save) me met l'erreur en pièce jointe nommée erreur.png
Je comprends bien que c'est l'encodage mais pourquoi cela ne marche plus maintenant...
HELP !!
Merci d'avance !