IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Utiliser une transformation XSL en vba


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Utiliser une transformation XSL en vba
    Hello à tous,

    Je cherche à automatiser l’intégration de fichiers XML via vba, mais j'aimerais cependant pouvoir y appliquer la transformation XSL comme ça l'est possible manuellement.

    Le code suivant fonctionne très bien et permet d'importer plusieurs XML dans une même table.

    Mais où et comment appeler mon modèle XSL en vba ?

    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
     
    Public Sub Export()
    Dim strFile As String 'Nom De Fichier
    Dim strFileList() As String 'Liste Fichier
    Dim intFile As Integer 'Numero de Fichier
    Dim filename As String
    Dim path As String
     
        DoCmd.SetWarnings False
        path = "Y:\Base article\Hicham\ZIS\XML\"
     
        'Boucle dans le dossier ; construction du listing de fichier
        strFile = Dir(path & "*.xml")
     
        While strFile <> ""
        'Ajout des fichiers dans la liste
        intFile = intFile + 1
        ReDim Preserve strFileList(1 To intFile)
        strFileList(intFile) = strFile
        strFile = Dir()
        Wend
     
        'Check si aucun fichier n'est trouvé
        If intFile = 0 Then
        MsgBox "No files found"
        Exit Sub
        End If
     
        'Boucle parmi tous les ficheirs
        For intFile = 1 To UBound(strFileList)
        filename = path & strFileList(intFile)
     
        Application.ImportXml filename, acAppendData
     
        Next intFile
     
      DoCmd.SetWarnings True
     
    End Sub
    Merci à vous

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,
    Une piste sur ce post de 2005: Transforming XML in Microsoft Access dont je reproduis le code (avec une présentation modifiée):
    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
    Private Sub Transform(sourceFile, stylesheetFile, resultFile)
        Dim source As New MSXML2.DOMDocument30
        Dim stylesheet As New MSXML2.DOMDocument30
        Dim result As New MSXML2.DOMDocument30
        '--- Load data
        source.async = False
        source.Load sourceFile
        '--- Load style sheet
        stylesheet.async = False
        stylesheet.Load stylesheetFile
        If (source.parseError.ErrorCode <> 0) Then
               MsgBox ("Error loading source document: " & source.parseError.reason)
        Else
            If (stylesheet.parseError.ErrorCode <> 0) Then
                MsgBox ("Error loading stylesheet document: " & stylesheet.parseError.reason)
            Else
                '--- Do the transform
                source.transformNodeToObject stylesheet, result
                result.Save resultFile
            End If
        End If
    End Sub
     
    Sub Transform_Import()
        '--- Transform (à effectuer avant l'import)
        Transform "http://simonstl.com/ora/updateBook.xml", _
                    "C:\xslt\attsToElem.xsl", _
                    "C:\temp\tempImport.xml"
        '--- Import du fichier transformé
        Application.ImportXML "C:\temp\tempImport.xml", acAppendData
    End Sub
     
    Sub Export_Transform()
        '--- Export du fichier (à effectuer avant Transform)
        Application.ExportXML acExportTable, "books", "C:\temp\tempExport.xml"
        '--- Transform du fichier exporté
        Transform "C:\temp\tempExport.xml", _
                    "C:\xslt\booksToHTML.xsl", _
                    "C:\export\exportedBooks.html"
    End Sub
    ... "plus qu'à" l'adapter! Je ne l'ai pas testé.

    Bonne continuation

  3. #3
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Bonjour,
    Voici une autre méthode, très simple (simpliste ?) pour faire la même chose en 1 ligne.
    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
    Sub transformationXSLT()
     
    'Définition des variables
    Dim strPath As String       'le fichier XML avant transformation
    Dim strPathxslt As String   'le fichier xslt
    Dim strPathResultat As String   'le fichier résultat de la transformation
     
    'initialisation des variables
    strPath = "C:\Temp\Monfichier.xml"
    strPathxslt = "C:\Temp\MaTransforamtion.xslt"
    strPathResultat = "C:\Temp\MonfichierApresTransformation.xml"
     
    'l'opération se fait en 1 ligne
    Application.TransformXML strPath, strPathxslt, strPathResultat
     
    End Sub

  4. #4
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Nickel merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Inclure la dtd de SMIL ou SVG pour une transformation xsl
    Par 0coco0 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/12/2008, 20h49
  2. [XSLT] CDATA par défaut lors d'une transformation xsl
    Par thierry_b dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 16/12/2008, 13h57
  3. [XSLT]utiliser une feuille xsl pour traiter différents xml
    Par pistache42 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/05/2006, 18h19
  4. Encodage lors d'une transformation xsl par le browser
    Par ouioui2000 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/04/2006, 12h09
  5. [C#] Comment réussir une transformation XSL ?
    Par ashurai dans le forum C#
    Réponses: 6
    Dernier message: 03/03/2006, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo