Hallo
Ich möchte in der Lage sein, eine XML-Datei aus SOLIDWORKS zu erstellen und sie auch zu lesen und Werte aus dieser Datei abzurufen.
Ziel ist es, je nach Computer, von dem aus das Makro gestartet wird, unterschiedliche CheckBox-Optionen zu speichern und beim nächsten Start mit möglichen Änderungen abzurufen.
Ich habe eine funktionale Methode gefunden, um diese XML-Datei zu schreiben, aber es ist unmöglich, Werte abzurufen (sie fügt mich als Leerzeichen zwischen jedem Buchstaben im Makro-Ansichtsfenster ein, und dennoch ist das XML ohne Leerzeichen zwischen den Buchstaben.
Hier ist die xml-Datei:
<OPTIONS>
<CheckBoxCacherPièce="Vrai">
<CheckBoxCacherPlan="Vrai">
<CheckBoxDesignation="Vrai">
<CheckBoxCouleur="Vrai">
<CheckBoxRevision="Vrai">
</OPTIONS>
Das zu schreibende Makro:
' Add a reference to Microsoft Scripting Runtime (click Tools > References > Browse > C:\windows\system32\scrrun.dll.
Sub ecrire()
'Exemple XML attribute: <Counter name="Incrementing0" Version="1" id="Incrementing0" Auto="0" AutoName="" type="1" RangeCounter="False" RangeDate="23/12/2019">
Dim swApp As SldWorks.SldWorks
Dim sPath As String
Dim sPathName As String
Dim fso As Scripting.FileSystemObject
Dim XMLfile As Scripting.TextStream
Set swApp = Application.SldWorks
sPath = Environ("USERPROFILE") & "\.SaveMacroSldworks\"
sPathName = sPath & "SaveMacroIndice.xml"
Debug.Print sPathName
'On vérifie si le dossier existe sinon on le créé
'If Dir(sPath) = "" Then
If Dir(sPath, vbDirectory + vbHidden) = "" Then
Debug.Print "Création du dossier: " & sPath
MkDir sPath
End If
Set fso = CreateObject("Scripting.FileSystemObject")
Set XMLfile = fso.CreateTextFile(sPathName, True, True)
XMLfile.WriteLine "<OPTIONS>"
'On vérifie tout les objets commençant par CheckBox et on sauvegarde la valeur de l'option dans le fichier xml
Dim ole1 As Control
For Each ole1 In UserformOptionsMacro.Controls
If Left$(ole1.Name, 8) = "CheckBox" Then XMLfile.WriteLine " <" & ole1.Name & "=" & Chr(34) & ole1.Value & Chr(34) & ">"
Next
'XMLfile.WriteLine " <Option 1=" & Chr(34) & True & Chr(34) & ">"
XMLfile.WriteLine "</OPTIONS>"
XMLfile.Close
End Sub
Das zu lesende Makro:
Sub lire()
Dim swApp As SldWorks.SldWorks
Dim sPath As String
Dim sPathName As String
Dim fso As Scripting.FileSystemObject
Dim XMLfile As Scripting.TextStream
Dim stChaine As String
Set swApp = Application.SldWorks
sPath = Environ("USERPROFILE") & "\.SaveMacroSldworks\"
sPathName = sPath & "SaveMacroIndice.xml"
Debug.Print sPathName
Set fso = CreateObject("Scripting.FileSystemObject")
'Ajouter la gestion d'erreur si fichier introuvable
Set XMLfile = fso.OpenTextFile(sPathName, ForReading, True, TristateFalse)
'Read till the end
Do Until XMLfile.AtEndOfStream
'Debug.Print "Printing line " & XMLfile.Line
'Debug.Print XMLfile.ReadLine 'Print a line from the file
stChaine = XMLfile.ReadLine
stChaine = Replace(stChaine, " ", vbNullString)
Debug.Print stChaine
If stChaine Like "*Checkbox*" Then MsgBox "CheckBox ok"
Loop
XMLfile.Close
End Sub
Wenn jemand eine andere, funktionalere Methode, ein Beispiel oder einfach einen Lead hat, den er mir mitteilen kann, wird es mir ermöglichen, mit meinem Projekt voranzukommen.
Vielen Dank im Voraus.