Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3048 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  Mappage XML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mappage XML

n°2005220
daffet
Posté le 28-06-2010 à 11:02:03  profilanswer
 

Bonjour,
 
J'importe des données XML dans un classeur excel avec un mappage.  
Je dispose de plusieurs fichiers XML qui contiennent les mêmes attributs.
J'aimerais savoir comment faire pour importer des données a partir d'un autre fichier XML sans avoir a redefinir le mappage.  
 
Idéalement je souhaiterais créer une macro permettant:
-de permettre a l'utilisateur de localiser un fichier XML dans un dossier prédéfini
-d'appliquer un mappage prédéfini
 
Est-ce possible? Et si oui, comment
Je vous remercie par avance.
 
 

mood
Publicité
Posté le 28-06-2010 à 11:02:03  profilanswer
 

n°2005646
daffet
Posté le 29-06-2010 à 12:25:20  profilanswer
 

J'ai finalement un début de solution a mon premier problème:
 
Sub GetPath()
       XmlFile = Application.GetOpenFilename("XML File,*.xml" )
       MsgBox XmlFile
End Sub
 
Voici l'arborescence de mon dossier:
 
Racine/Dossier1/Dossier11: fichier.xml
Racine/Dossier2/Dossier21: fichier.xls
 
Actuellement la macro GetPath() permet de choisir un fichier dans le dossier: Racine/Dossier2/Dossier21
Je voudrais savoir comment modifier la macro GetPath() pour qu'elle choisisse le dossier: Racine/Dossier1/Dossier11
Je précise que la racine n'est pas connue car le fichier excel peut se trouver sur un disque quelconque sur n'importe quel PC.
 
Je bute également toujours sur l'application d'un mappage prédéfini. Je me suis sans doute mal exprimé:
Je souhaite faire correspondre,par exemple, les balises <balise1> a la colonne A de ma feuille 2 et les balises <balise2> a la case B613 de ma feuille 1.
 
Je vous remercie de votre aide.

n°2005960
daffet
Posté le 30-06-2010 à 10:33:15  profilanswer
 

Bonjour,
 
J'ai un probleme avec la commande Xpath.SetValue.
Voici mon code:
 
Sub ImportXML()
 
ChDir ActiveWorkbook.Path
ChDir ".."
ChDir ".."
ChDir "QMS"
 
XmlFile = Application.GetOpenFilename("XML File,*.xml" )
     
Dim mMap As Xmlmap
Dim i As String
Dim n As XPath
Set mMap = ActiveWorkbook.XmlMaps.Add(XmlFile)
i = "/tbl_Acquisition/Project/Vessel"
Worksheets("Test" ).Range("A10" ).XPath.SetValue mMap, i
 
Le XPath n'est pas valide.
 
Mon fichier XML se presente comme suit:
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<tbl_Acquisition>
<Project Name="DCA" Identifier="" Vessel="GEMINI" Operator="DCA">
<Activitycode>DCA</Activitycode>
</tbl_Acquisition>
 
Le but est d'effectuer un mappage entre "Vessel" et la cellule "A10" de la feuille "Test"
 
Pourriez vous m'aider SVP?
 
Je vous remercie
 
 

n°2005974
Paulp
~, sweet ~
Posté le 30-06-2010 à 11:11:12  profilanswer
 

Vessel est un attribut, donc i = "/tbl_Acquisition/Project/@Vessel", si je ne m'abuse


Message édité par Paulp le 30-06-2010 à 11:11:24
n°2005977
daffet
Posté le 30-06-2010 à 11:20:34  profilanswer
 

Merci beaucoup!

n°2005998
daffet
Posté le 30-06-2010 à 12:12:29  profilanswer
 

Je souhaite extraire une heure dans la chaine de caractere de l'attribut "StartTime" du fichier XML suivant:
 
<tbl_Acquisition>
<Project Name="DCA" Identifier="" Vessel="GEMINI" Operator="DCA">
<tbl_ReplayTimes>
<UTC StartTime="2010-06-25T07:59:23.440+00:00"  
 
Je voudrais recuperer l'heure 07:59:23 de l'attribut StartTime ci-dessus.
 
J'ai essaye
start_time = "/tbl_Acquisition/Project/tbl_ReplayTimes/UTC/@StartTime"
start_time_regex = Application.WorksheetFunction.Mid(start_time, Application.WorksheetFunction.Find("T", start_time) + 1, 8)
 
J'ai une erreur de type: "Object doesn't support that method"
 
Auriez-vous une idee?
Cordialement.

n°2006027
Paulp
~, sweet ~
Posté le 30-06-2010 à 13:59:03  profilanswer
 

Je ferai ça avec une expression régulière, mais je ne sais pas comment ça se fait en VB.
 
En tous cas, avec le code que tu donnes, start_time vaut le xpath "/tbl_Acquisition/Project/tbl_ReplayTimes/UTC/@StartTime" et pas "2010-06-25T07:59:23.440+00:00"

n°2006281
daffet
Posté le 01-07-2010 à 11:54:31  profilanswer
 

Bonjour,
 
Au lieu d'utiliser des expressions régulières il est est possible d'utiliser un filtre.
Je dispose d'une colonne C contenant des données de la forme: 2010-06-25T07:59:23.440+00:00
Je filtre ces données dans la colonne D avec: D1=IF(C1<>"",MID(C1,FIND("T",C1)+1,8),"" ),idem pour D2, D3...
En D1 j'écris donc: 07:59:23
 
J'aimerais le faire en VBA:
J'ai essaye:
 
For i = 1 To 15
    If Worksheets("1" ).Range("C" & i).Value <> "" Then
        Worksheets("1" ).Range("D" & i).Value = Application.WorksheetFunction.Mid(Worksheets("1" ).Range("C" & i).Value, Application.WorksheetFunction.Find("T", Cellule.Value) + 1, 8)
         
End If
Next i
 
Problème: cette fonction n'écrit rien....
Auriez-vous une solution a mon problème?
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  Mappage XML

 

Sujets relatifs
XMLMappage FTP en vbscript
Parseur XML (fichier récupéré à partir d'un web service)Supprimer un élément XML en ayant son ID
[Cocoa] Parsing XML iphoneparcourir une chaine XML. urgent
creer un fichier XMLChanger l'emplacement du fichier XML
Lire fichier avec XMLMappage XML sous Excel
Plus de sujets relatifs à : Mappage XML


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR