Bonjour à tous,
C'est la première fois que je demande de l'aide sur un forum. J'ai cherché partout, mais ne trouve pas de solution.
Voilà, j'ai un document word, dans lequel j'ai insérer une fichier XSD, sans liaison car je veux que le fichier soit indépendant, sous forme d'icone.
J'ai un userform, dans lequel il y a un bouton.
Lorsque l'utilisateur clique sur ce bouton, ca lui demande d'indiquer un fichier XML.
Une fois sélectionné, alors le programme va le valider en fonction du fichier XSD qu'il contient sur l'une de ses pages. Çà c'est ce que j'aimerais !
Actuellement mon programme fonctionne, mais en prenant le XSD via un chemin, à l’extérieur du document word.
Mais je veux qu'il utilise celui qu'il a dans son document.
j'ai je crois tout essayé avec ActiveDocument.InlineShapes(1), mais rien n'y fais, je n'arrive pas à faire fonctionner ma macro en récupérant le fichier XSD qui est inséré dans le document word.
Une piste : via word, quand je fais un clique droit sur ce document XSD, et que je vais dans "Objet Objet d'environnement du gestionnaire de liaison" et que je clique sur "Renommer le package", j'obtiens une popup avec dedans le nom du fichier sous la forme "C:\Users\USER~1\AppData\Local\Temp\XSD.xsd"
Si j'arrivais à récupérer ce chemin, je pense que cela fonctionnerais !
Donc pour résumer, comment interagir avec un document inséré sans liaison, autre que excel car j'ai un autre document inséré qui est un fichier Excel et avec lequel j'arrive à interagir (ActiveDocument.InlineShapes(2))
Voici la macro qui fonctionne, mais qui fait référence en dur au chemin du fichier XSD à l'extérieur du document WORD (Code à améliorer) :
En vous remerciant par avance
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 Sub validerXML(xml As String) 'prend en paramètre le chemin du fichier XML à faire valider Dim WshShell Set WshShell = CreateObject("WScript.Shell") Dim xmlDoc Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0") xmlDoc.async = False xmlDoc.validateOnParse = True xmlDoc.setproperty "MultipleErrorMessages", True Dim xmlSchema Set xmlSchema = CreateObject("Msxml2.DOMDocument.6.0") xmlSchema.async = False xmlSchema.validateOnParse = True xmlSchema.Load "C:\Users\Desktop\WSD.xsd" 'ActiveDocument.InlineShapes(1).OLEFormat.IconLabel Dim xsdCache Set xsdCache = CreateObject("Msxml2.XMLSchemaCache.6.0") xsdCache.Add "", xmlSchema Set xmlDoc.schemas = xsdCache xmlDoc.Load xml Dim xmlParseErr Set xmlParseErr = xmlDoc.ParseError If (xmlParseErr.errorParametersCount <> 0) Then Dim ParseError Dim msgErr As String msgErr = "" For Each ParseError In xmlParseErr.AllErrors msgErr = msgErr & "Erreur ligne = " & ParseError.Line & vbCrLf & ParseError.reason & vbCrLf Next MsgBox msgErr Else MsgBox ("Fichier XML conforme à la XSD") End If End Sub
Partager