Hallo ihr alle
Ich bin kein Experte, weit davon entfernt, in VBA zu sein, aber ich mag das Tool
Ich habe ein Stück Code mit verschiedenen Makroteilen geschrieben, um eine automatische Nummerierung meiner Teile zu haben
Ich merke mir den Zähler in einer Zelle einer Excel-Datei, die ich kopiere, inkrementiere und in die Zwischenablage einfüge
Technisch funktioniert es
aber die Ausführungszeit ist ziemlich lang, da ich die Excel-Datei öffne, schreibe, speichere und wieder schließe
Ich habe mich gefragt, ob es nicht die Möglichkeit gibt, den Wert meines Messgeräts an anderer Stelle zu speichern, damit es schneller geht
Bei der Suche im Internet habe ich gesehen, dass man Informationen in einer INI-Datei speichern kann, aber der Code funktioniert nicht mit Solidworks
Hast du irgendwelche Ideen, wie ich den Wert meines Zählers speichern kann (4 Zeichen 1234)
Ich habe mich gefragt, ob es nicht eine Möglichkeit gibt, diesen Zähler direkt in der Makro-.swp-Datei zu speichern
Was denkst du
Vielen Dank
JC.
Zu Ihrer Information: Der Smartproperties-Zähler von Visiativ verwendet xml.
Hier ist ein Beispiel dafür, wie die Optionen eines Benutzerformulars gespeichert werden können (Kontrollkästchen)
Um dies in der Referenz zu tun, überprüfen Sie Microsoft XML, v3.0 (nächste Version Office)
Code du main:
sPathXML = Environ("USERPROFILE") & "\.SaveMacroSldworks\"
sPathNameXML = sPathXML & nomfichierXML
Debug.Print sPathXML & nomfichierXML
'On vérifie si le dossier de sauvegarde existe sinon création de ce dossier
If Dir(sPathXML, vbDirectory + vbHidden) = "" Then
Debug.Print "Création du dossier: " & sPathXML
MkDir sPathXML
End If
FichierXml = sPathXML & nomfichierXML
Debug.Print "Fichier xml:" & FichierXml
Um es aus dem Makro zu erstellen, die Funktion:
Sub CreationCompleteXML() 'Création du fichier xml de sauvegardes des paramètres du menu options
Dim oXML As Object
Dim oNode As Object
Dim root As Object
Dim elem As Object
Dim rel As Object
Set oXML = New MSXML2.DOMDocument
Set oNode = oXML.createProcessingInstruction("xml", "version=""1.0"" encoding=""ISO-8859-1""")
oXML.appendChild oNode
With oXML.appendChild(oXML.createElement("OPTIONS"))
.appendChild oXML.createTextNode(vbCrLf)
.appendChild oXML.createTextNode(vbTab)
With .appendChild(oXML.createElement("CheckBoxLectureSeule"))
.Text = IIf(UserformOptionsMacro.CheckBoxLectureSeule.Value = 0, "False", "True")
End With
.appendChild oXML.createTextNode(vbCrLf)
.appendChild oXML.createTextNode(vbCrLf)
.appendChild oXML.createTextNode(vbTab)
With .appendChild(oXML.createElement("CheckBoxCacherPièce"))
.Text = IIf(UserformOptionsMacro.CheckBoxCacherPièce.Value = 0, "False", "True")
End With
.appendChild oXML.createTextNode(vbCrLf)
.appendChild oXML.createTextNode(vbTab)
With .appendChild(oXML.createElement("CheckBoxCacherPlan"))
.Text = IIf(UserformOptionsMacro.CheckBoxCacherPlan.Value = 0, "False", "True")
End With
.appendChild oXML.createTextNode(vbCrLf)
.appendChild oXML.createTextNode(vbTab)
With .appendChild(oXML.createElement("CheckBoxDesignation"))
.Text = IIf(UserformOptionsMacro.CheckBoxDesignation.Value = 0, "False", "True")
End With
.appendChild oXML.createTextNode(vbCrLf)
.appendChild oXML.createTextNode(vbTab)
With .appendChild(oXML.createElement("CheckBoxCouleur"))
.Text = IIf(UserformOptionsMacro.CheckBoxCouleur.Value = 0, "False", "True")
End With
.appendChild oXML.createTextNode(vbCrLf)
.appendChild oXML.createTextNode(vbTab)
With .appendChild(oXML.createElement("CheckBoxRevision"))
.Text = IIf(UserformOptionsMacro.CheckBoxRevision.Value = 0, "False", "True")
End With
.appendChild oXML.createTextNode(vbCrLf)
End With
oXML.Save FichierXml
End Sub
Mein Benutzerformular zum Abrufen der in der XML-Datei gespeicherten Optionen
'Initialisation du formulaire
Private Sub UserForm_Initialize()
'position du userform par rapport à la fenêtre (1= centré/fenêtre 2= centré écran, 3=angle en haut à gauche)
'Me.StartUpPosition = 0
Me.StartUpPosition = 2 - CenterScreen
'UserformOptionsMacro.Left = Activewindow.Left + Activewindow.Width / 2 - UserformOptionsMacro.Width / 2
'initialisation du userform
CommandButtonExec.SetFocus
'On parcours le fichier xml pour récupérer les valeures sauvegardées.
Debug.Print "Fichier xml:" & FichierXml
If Dir(FichierXml) = "" Then
Debug.Print "Pas de fichier xml trouvé -> les valeures par défaut seront sélectionnées"
CheckBoxLectureSeule = True
CheckBoxCouleur = True
CheckBoxDesignation = True
CheckBoxCacherPlan = True
CheckBoxCacherPièce = True
CheckBoxRevision = False
Else
Debug.Print "Fichier xml trouvé -> les valeures sauvegardées seront sélectionnées"
Dim oXML As MSXML2.DOMDocument
Dim oNode As MSXML2.IXMLDOMNode
Set oXML = New MSXML2.DOMDocument
oXML.async = False
oXML.Load FichierXml
For Each oNode In oXML.documentElement.childNodes
For Each osubnode In oNode.childNodes
Debug.Print " - " & oNode.baseName, "=" & osubnode.Text
If oNode.baseName = "CheckBoxLectureSeule" Then CheckBoxLectureSeule = osubnode.Text
If oNode.baseName = "CheckBoxCouleur" Then CheckBoxCouleur = osubnode.Text
If oNode.baseName = "CheckBoxDesignation" Then CheckBoxDesignation = osubnode.Text
If oNode.baseName = "CheckBoxCacherPlan" Then CheckBoxCacherPlan = osubnode.Text
If oNode.baseName = "CheckBoxCacherPièce" Then CheckBoxCacherPièce = osubnode.Text
If oNode.baseName = "CheckBoxRevision" Then CheckBoxRevision = osubnode.Text
Next
Next
End If
End Sub
Code, der sich an Ihre Bedürfnisse anpasst,
In Bezug auf die Geschwindigkeit merkt man das Schreiben/Lesen nicht.
Großartig danke, ich werde es mir ansehen, ich werde Sie auf dem Laufenden halten
JC
Hallo und herzlich willkommen.
Ihr Ziel ist es, den Zustand Ihres Messgeräts nach dem Ausschalten des Computers zu ermitteln und 3 Tage später wieder aufzunehmen? Oder einfach nur für eine Sitzung? Oder etwas anderes?
Je nach Bedarf scheint es mir, dass ein deklariertes Collection-Objekt nach der Verwendung deklariert werden muss, da es sonst im Speicher verbleibt, daher denke ich, dass die Sammlung vielleicht auch ihre Werte beibehält. Ich habe den Test nie gemacht.
Oder ein Messgerät mit mehreren Personen teilen? (XML-Datei über das Netzwerk)
Guten Abend, ja, ich möchte das Messgerät teilen und ja, es muss nach dem Ausschalten des Computers im Speicher bleiben
Was ist für meine Kultur ein Sammlerstück?
Vielen Dank
Für das Sammlungsobjekt:
Aber sobald SW für mich ausgeschaltet ist, verschwindet die Sammlung und das Sammlungsobjekt wäre bei jedem Beitrag anders.
Am besten geeignet für Ihren Bedarf scheint mir das Xml wie Visiativ für ihren Münzzähler zu sein, den wir an 15-20 Stationen verwendet haben, ohne jemals Probleme gehabt zu haben.
Jetzt sind wir auf die SQL-Version umgestiegen, um auch bei der Telearbeit eine Zahl erhalten zu können.
Zu Ihrer Information, die Site, von der ich den Code für die Xml-Datei extrahiert habe:
Den für Office geplanten Code hatte ich dann dank dieses Forums und eines VBA-Spezialisten angepasst.