setfocus
Messages postés47Date d'inscriptiondimanche 16 avril 2006StatutMembreDernière intervention 7 novembre 2011
-
18 août 2009 à 10:35
youssef -
31 déc. 2013 à 22:07
Bonjour,
Un répertoire contient plusieurs fichiers XML de structures identiques.
Je veux réaliser un fichier Excel me listant les valeurs d'une certaine balise de ces fichiers.
Voici un bout de code qui fonctionne très bien... jusqu'au 10ème fichier! à partir du 10ème fichier une erreur "variable objet ou bloc with non définit" s'affiche.
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Set MonRep = ObjFSO.GetFolder("\\chemin")
Set ListFichiers = MonRep.Files
i = 2
For Each MonFich In ListFichiers
If Right(MonFich.Name, 3) = "xml" Then
XMLDoc.Load (MonFich)
Set XMLNode = XMLDoc.selectSingleNode("//Service")
ActiveSheet.Cells(i, 1) = XMLNode.Text
End If
i = i + 1
Next
Auriez vous une idée?
En vous remerciant d'avance pour l'aide apportée...
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 18 août 2009 à 11:22
normal, tu fais un Set XMLNode =
et tu utilises derrière XMLNode.Text sans tester si tu l'as bien récupérée...
a voir si ton fichier XML la contient bien.
à noter qu'il est inutile de passer par FSO en VBA :
Dim sFileName As String
Dim i As Long
Dim oXML As DOMDocument60
Dim oNode As IXmlDomNode
Set oXML = New DOMDocument60
oXML.Async = False
i = 2
sFileName = Dir$("\\chemin\*.xml")
Do While LenB(sFileName)
oXML.Load "\\chemin" & sFileName
Set oNode = oXML.selectSingleNode("//Service")
If Not Nothing Is oNode Then
ActiveSheet.Cells(i, 1) = oNode.Text
i = i +1
End If
sFileName = Dir$()
Loop
Sub de()
Dim xmlDoc As Object
Dim xmlImps As Object
Dim xmlImp As Object
Dim xmlView As Object
Dim xmlComment As Object
Dim xmlNew As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.Load "C:\lien.xml"
Set element = xmlDoc.DocumentElement.GetElementsByTagName("conceptGrp")
For Each noeud In element
MsgBox (noeud.nodeTypedValue)
Next
End Sub
setfocus
Messages postés47Date d'inscriptiondimanche 16 avril 2006StatutMembreDernière intervention 7 novembre 2011 18 août 2009 à 11:45
Salut et merci de ta réponse.
pour le tag, tous les fichiers XML la contiennent obligatoirement. (valeur obligatoire lors de la création du XML via un site).
Pour fso tu as raison!! et d'ailleur, maintenant, ca marche!
31 déc. 2013 à 22:07
Sub de()
Dim xmlDoc As Object
Dim xmlImps As Object
Dim xmlImp As Object
Dim xmlView As Object
Dim xmlComment As Object
Dim xmlNew As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.Load "C:\lien.xml"
Set element = xmlDoc.DocumentElement.GetElementsByTagName("conceptGrp")
For Each noeud In element
MsgBox (noeud.nodeTypedValue)
Next
End Sub