So speichern Sie eine Variable (schnell)

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.

2 „Gefällt mir“

Großartig danke, ich werde es mir ansehen, ich werde Sie auf dem Laufenden halten
JC

1 „Gefällt mir“

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.

1 „Gefällt mir“

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.

1 „Gefällt mir“