Benutzerdefinierte Werte programmgesteuert speichern und wiederherstellen mit VBA
Im Modus Save defined cell values only können Sie mit XLS Padlock zusätzlich zu den vordefinierten Zellwerten auch benutzerdefinierte Werte speichern und wiederherstellen. Dies ist nützlich, um Variablen, Einstellungen oder Daten zu speichern, die nicht direkt in einer Zelle abgelegt sind.
Überblick
Section titled “Überblick”Diese Funktionalität beruht auf zwei VBA-Ereignissen und zwei VBA-API-Funktionen. Sie platzieren Code in den Ereignis-Unterroutinen, um Ihre benutzerdefinierten Daten zu lesen oder zu schreiben, wenn der Benutzer seine Arbeit lädt oder speichert.
Wichtigste Ereignisse und Funktionen
Section titled “Wichtigste Ereignisse und Funktionen”VBA-Ereignisse
Section titled “VBA-Ereignisse”Die folgenden beiden Ereignis-Unterroutinen müssen in einem Modul Ihrer Excel-Arbeitsmappe platziert werden. XLS Padlock ruft sie während des Speicher- und Ladevorgangs automatisch auf.
' Called when a user loads a save file.Sub XLSPadlock_RestoreCustomValues() ' Your code to read values goes here. MsgBox ("Restoring custom values...")End Sub
' Called when a user saves their work.Sub XLSPadlock_SaveCustomValues() ' Your code to write values goes here. MsgBox ("Saving custom values...")End SubVBA-API-Funktionen
Section titled “VBA-API-Funktionen”- WriteCustomCellValue(UniqueID, Value): Schreibt einen einzelnen Zeichenfolgenwert, der einer eindeutigen ID zugeordnet ist.
- ReadCustomCellValue(UniqueID, DefaultValue): Liest einen einzelnen Zeichenfolgenwert für eine bestimmte ID. Wird die ID nicht gefunden, gibt die Funktion den
DefaultValuezurück.
Einzelne Werte lesen und schreiben
Section titled “Einzelne Werte lesen und schreiben”So schreiben Sie einen einzelnen Wert:
Sub XLSPadlock_SaveCustomValues() Dim XLSPadlock1 As Object On Error Resume Next Set XLSPadlock1 = Application.COMAddIns("GXLS.GXLSPLock").Object XLSPadlock1.WriteCustomCellValue "MySetting", "MyValue"End SubUnd so lesen Sie ihn wieder ein:
Sub XLSPadlock_RestoreCustomValues() Dim XLSPadlock1 As Object On Error Resume Next Set XLSPadlock1 = Application.COMAddIns("GXLS.GXLSPLock").Object
Dim MySettingValue As String MySettingValue = XLSPadlock1.ReadCustomCellValue("MySetting", "Default")End SubAlle Werte als Dictionary lesen
Section titled “Alle Werte als Dictionary lesen”Sie können auch alle gespeicherten benutzerdefinierten Werte auf einmal lesen, indem Sie eine leere Zeichenfolge als ID an ReadCustomCellValue übergeben. Dies gibt ein Scripting.Dictionary-Objekt zurück.
Sub XLSPadlock_RestoreCustomValues() Dim XLSPadlock1 As Object On Error Resume Next Set XLSPadlock1 = Application.COMAddIns("GXLS.GXLSPLock").Object
Dim Dict As Object ' Scripting.Dictionary Set Dict = XLSPadlock1.ReadCustomCellValue("", "")
If Not Dict Is Nothing Then For Each Key In Dict.Keys MsgBox "Key: " & Key & ", Value: " & Dict(Key) Next Key End IfEnd SubVollständiges Beispiel: Speichern/Wiederherstellen einer Spalte
Section titled “Vollständiges Beispiel: Speichern/Wiederherstellen einer Spalte”Diese Hilfsfunktion erzeugt aus den Werten eines bestimmten Zellbereichs eine durch Kommas getrennte Zeichenfolge.
Function CsvRange(myRange As Range) As String Dim csvRangeOutput As String Dim entry As Variant For Each entry In myRange If Not IsEmpty(entry.Value) Then csvRangeOutput = csvRangeOutput & entry.Value & "," End If Next If Len(csvRangeOutput) > 0 Then CsvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1) End IfEnd FunctionDieses Ereignis wird aufgerufen, wenn der Benutzer seine Arbeit speichert. Es verwendet die Hilfsfunktion, um den gesamten verwendeten Bereich der Spalte A in eine einzige Zeichenfolge umzuwandeln und diese zu speichern.
Sub XLSPadlock_SaveCustomValues() Dim XLSPadlock1 As Object On Error Resume Next Set XLSPadlock1 = Application.COMAddIns("GXLS.GXLSPLock").Object
Dim rng As Range Set rng = ThisWorkbook.Worksheets(2).Range("A1").CurrentRegion
Dim myString As String myString = CsvRange(rng)
XLSPadlock1.WriteCustomCellValue "MyEntireColumnA", myStringEnd SubDieses Ereignis wird aufgerufen, wenn der Benutzer eine Speicherdatei lädt. Es liest die Zeichenfolge und stellt die Werte in Spalte A wieder her.
Sub XLSPadlock_RestoreCustomValues() Dim XLSPadlock1 As Object On Error Resume Next Set XLSPadlock1 = Application.COMAddIns("GXLS.GXLSPLock").Object
Dim Val As String Val = XLSPadlock1.ReadCustomCellValue("MyEntireColumnA", "")
If Val <> "" Then Dim r As Range, i As Long, ar Set r = ThisWorkbook.Worksheets(2).Range("A:A") r.ClearContents
ar = Split(Val, ",") For i = 0 To UBound(ar) r.Cells(i + 1, 1).Value = ar(i) Next End IfEnd Sub
## Siehe auch
- [Wie Sie Benutzerdaten aus einer früheren Version migrieren](excel-vba-migrate-user-data-updates)