![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: novembre 2007
Messages: 31
|
Bonjour,
J'utilise le code ci-dessous pour générer un fichier xml. J'ai un problème pour le contenu d'une balise dont le texte comporte des < et > interprétés en < et > exemple : <logolink><!CDATA[http://...]]></logolink> qui lorsque que je lis dans notepad le fichier xml généré se retrouve en <logolink><!CDATA[http://...]]></logolink> voici mon code ci-dessous issu d'un post de ce forum: Code:
Sub CreationFichierXML(Plage As Range)
'
'Nécessite d'activer la référence "Microsoft XML, V..."
'
Dim XnodeRoot As IXMLDOMElement, oNode As IXMLDOMNode
Dim XNom As IXMLDOMElement
Dim XInfos As IXMLDOMElement
Dim Cmt As IXMLDOMComment
Dim Entete As Range, Cell As Range
Dim i As Integer, j As Integer
Set Entete = Plage.Rows(1)
Set Plage = Plage.Offset(1, 0).Resize(Plage.Rows.Count - 1, Plage.Columns.Count)
'----
Set objDOM = New DOMDocument
'Ajoute un commentaire qui reprend le nom de l'utilisateur et la date du jour.
Set Cmt = objDOM.createComment("Créé par " & Environ("username") & ", le " & Date)
Set Cmt = objDOM.insertBefore(Cmt, objDOM.childNodes.Item(0))
'Type de fichier
Set oNode = objDOM.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
Set oNode = objDOM.insertBefore(oNode, objDOM.childNodes.Item(0))
'----
Set XnodeRoot = objDOM.createElement("Portlet")
objDOM.appendChild XnodeRoot
For i = 1 To Plage.Rows.Count
Set XNom = objDOM.createElement("Identity")
XNom.setAttribute "Userinfo", Plage.Cells(i, 1)
XnodeRoot.appendChild XNom
Set XInfos = objDOM.createElement("LogoUrl")
XInfos.Text = Feuil2.Cells(13, 4).Value
XNom.appendChild XInfos
Set XInfos = objDOM.createElement("LogoLink")
XInfos.Text = Feuil2.Cells(13, 5).Value
XNom.appendChild XInfos
Set XInfos = objDOM.createElement("MailLabel")
XInfos.Text = Feuil2.Cells(13, 6).Value
XNom.appendChild XInfos
Set XInfos = objDOM.createElement("MailRecipient")
XInfos.Text = Plage.Cells(i, 2)
XNom.appendChild XInfos
Set XInfos = objDOM.createElement("MailSubject")
XInfos.Text = Feuil2.Cells(13, 7).Value
XNom.appendChild XInfos
Next i
objDOM.Save ActiveWorkbook.Path + "\" & Feuil2.Cells(13, 8).Value
Set XnodeRoot = Nothing
Set objDOM = Nothing
End Sub
Bonne journée à tous. |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: avril 2005
Localisation: MONTARGIS (la Venise du Gâtinais)
Version Excel : Excel 2003 (PC)
Messages: 2 283
|
Salut Cety64,
Pour moi il s'agit juste d'un problème d'affichage des balises dans le bloc note ou autre ! Dans ton code, tu oublies de mettre l'extension du fichier Code:
objDOM.Save ActiveWorkbook.Path + "\" & Feuil2.Cells(13, 8).Value & ".xml" ![]() A+
__________________
Cordi@lement. La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses. ![]() VBA, vous ne savez pas comment faire ... Pensez à l'enregistreur de macro ! Menu -> Outils -> Macro -> Nouvelle macro ![]() Si vous souhaitez rejoindre le club des Supporters d'XLD ... c'est ICI Petite citation : C'est en XLDant que l'on devient XLDnaute Barbatruc ...
|
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: avril 2005
Localisation: MONTARGIS (la Venise du Gâtinais)
Version Excel : Excel 2003 (PC)
Messages: 2 283
|
Re,
Alors il ne faut pas créer un fichier XML ![]() Mais un fichier texte, sinon pourquoi vouloir l'ouvrir avec notepad !? A+
__________________
Cordi@lement. La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses. ![]() VBA, vous ne savez pas comment faire ... Pensez à l'enregistreur de macro ! Menu -> Outils -> Macro -> Nouvelle macro ![]() Si vous souhaitez rejoindre le club des Supporters d'XLD ... c'est ICI Petite citation : C'est en XLDant que l'on devient XLDnaute Barbatruc ...
|
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: octobre 2005
Messages: 221
|
Bonjour,
Notepad ne fait qu'afficher le fichier créé sans faire aucune interprétation. Ajouter le suffixe XML permet simplement de définir une typologie de fichier et l'associer un programme. dans notre cas il ne s'agit simplement d'un fichier contenant une syntaxe XML (donc plutôt du texte). Explication de texte (Xml) : Pour éviter de confondre certains caractères (lettres avec accents, &, = >< etc..) avec des balises on doit remplacer dans les textes ces caractères par des &... pour que le parseur (outils d'analyse syntaxique du XML) ne tienne compte de ces caractères. ici , Comme tu le sais, <> sont remplacés par > ou <. En conclusion si tu regarde ton fichier, c'est la macro qui fais des substitutions ==> donc il faut agir en amont = probablement choisir une autre méthode que "IXMLDOMElement" en effet le texte attribué via la proprité .txt est converti automatiquement en texte comparible XLM (donc avec convertion des caractères <>&=... en aLT > &) Pour que le parseur n'analyse pas un texte, on peut écrire le texte de la manière suivante : <![CDATA[ texte ignoré par le parseur xml]]> Tu peux effectivement faire un "remplacer par" avec une éditeur mais attention ton XML risque de comporter des erreurs. Pour afficher du XML n'utilise pas Notepad qui est trop "bourrin" utilise par exemple Ultraedit qui tient compte de la syntaxe GIBI Dernière modification par GIBI ; 08/08/2008 à 21h13. |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: mai 2008
Messages: 111
|
bonjour,
un autre solution possible: en fin de macro, ouvrir le fichier, remplacer les "<" en "<" et réenregistrer le fichier. peux-tu envoyer le fichier générer stp (juste pour voir le truc, ça m'intrigue) bonne journée |
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: octobre 2005
Messages: 221
|
Bonsoir,
je viens apporter une solution à votre problème qui est la saisie d'un texte contenant la notion de CDATA. Il faut enlever les notion Xml (<!CDATA[...]]>)dela cellule de la feuille excel (Feuil2.Cells(13, 5).Value), et créer directement cette notion comme suit : Set XInfos = objdom.createElement("LogoLink") Set root = objdom.documentElement Set CDATASection = objdom.createCDATASection(Cells(13, 5).Value) objdom.documentElement.appendChild CDATASection 'XInfos.Text = Cells(13, 5).Value XNom.appendChild XInfos et vous n'avez plus de problème de traduction "à tort" des bornes de balise XML Votre question m'a appris l'utilsation des méthode XML , personnellement je génère des fichiers XML soit avec word et du publipostage soit en VBA excel avec des print. Merci et bonsoir GIBI Dernière modification par GIBI ; 08/08/2008 à 22h59. |
|
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| Macro pour ouvrir le dernier fichier texte généré... | Christian0258 | Forum Excel | 23 | 30/04/2008 11h04 |
| Macro qui génère un graphique | Batemoun | Forum Excel | 28 | 16/02/2008 15h37 |
| sauveguarder une mise en page généré par une macro | saber | Forum Excel | 2 | 26/05/2005 16h42 |
| Excel a généré des erreurs : recuperer le fichier | Yann | Forum Excel | 2 | 11/03/2005 13h51 |
| généré un VBS a partir d'une macro | DjeDje_zr7 | Forum Excel Downloads - Archives | 3 | 24/11/2004 14h18 |