Bonjour,
j'ai feuilleté les différents tutos permettant d'importer des fichiers XML notamment celui ci:
http://arkham46.developpez.com/artic...ge=page_4#L5-B
j'ai un message comme quoi la variable objet n'est pas définie. comme je débute dans ce type de traitement je ne comprends pas d'où vient le problème d'autant que j'ai chargé la référence Microsoft XML 6.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 'Voir arborescence du fichier Function ReadXMLFileXMLIndent() Dim oXML As MSXML2.DOMDocument Dim oNode As MSXML2.IXMLDOMNode Set oXML = New MSXML2.DOMDocument oXML.async = False oXML.Load "C:\****\exportbis.xml" For Each oNode In oXML.DocumentElement.ChildNodes Debug.Print oNode.BaseName Next End Function
Du coup j'ai essayé le code source ci-dessous (trouvé sur http://www.access-programmers.co.uk/...d.php?t=213209) avec le fichier xml en pièce jointe ici export.zip
en testant dans ma base Access aucun message d'erreurs (j'ai aussi compiler mon projet vba) mais aucun import de données non plus dans la table
j'ai vérifié les liens des fichiers et le nom des variables, des champs et des tables pourtant et je suis (presque) sur que c'est correct.
en mettant des debug.print un peu partout j'ai l'impression que la boucle ne marche pas ou que la fonction ne trouve pas les noeuds.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 'Importer des fichiers XML dans Access lorsque ceux ci utilisent des attribut. Public Sub ImportXML2() Dim xmlDoc As MSXML2.DOMDocument Dim franchiseNode As MSXML2.IXMLDOMNode Dim playerNode As MSXML2.IXMLDOMNode Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("rosters") Set xmlDoc = New MSXML2.DOMDocument With xmlDoc .Load "C:\***\export.xml" If .parseError.ErrorCode <> 0 Then MsgBox "Error loading: " & .parseError.reason 'need to exit gracefully here End If For Each franchiseNode In .FirstChild.ChildNodes For Each playerNode In franchiseNode.ChildNodes rs.AddNew rs!franchise = franchiseNode.Attributes.getNamedItem("id").Text rs!player = playerNode.Attributes.getNamedItem("id").Text rs!Status = playerNode.Attributes.getNamedItem("status").Text rs.Update Next playerNode Next franchiseNode End With Set xmlDoc = Nothing Set franchiseNode = Nothing Set playerNode = Nothing Set rs = Nothing End Sub
J'ai du passé à côté de quelque chose mais je ne vois pas quoi... je n'en suis qu'à des traitements simples alors que ce que je cherche à faire est beaucoup plus complexe.Donc si quelqu'un pouvait me mettre sur la voie en me fournissant une base de travail toute faite avec un fichier xml (possédant plusieurs attributs différents pour chaque noeud) et un code source simple qui fonctionne ça m'arrangerait pour la suite qui s'avère plus compliqué.
Petite précision pour la suite : le fichier xml que je souhaite importer fait 110 mo et comporte 2 600 000 de lignes (je ne m'intéresserait qu'à certaines informations à l'intérieur mais ça va représenter un gros volume de données...) donc si vous avez des suggestions pour éviter que les traitements prennent trop longtemps je suis preneur car l'optimisation de code et moi ça fait deux
un grand merci d'avance à celui qui me sortira du pétrin
Partager