Salvare e ripristinare valori personalizzati a livello programmatico con VBA
Quando si utilizza la modalità Save defined cell values only (salva solo i valori di cella definiti), XLS Padlock consente di salvare e ripristinare valori personalizzati oltre ai valori di cella predefiniti. Ciò è utile per salvare variabili, impostazioni o dati che non sono memorizzati direttamente in una cella.
Panoramica
Section titled “Panoramica”Questa funzionalità si basa su due eventi VBA e due funzioni dell’API VBA. Il codice viene inserito nelle subroutine di evento per leggere o scrivere i dati personalizzati quando l’utente carica o salva il proprio lavoro.
Eventi e funzioni principali
Section titled “Eventi e funzioni principali”Eventi VBA
Section titled “Eventi VBA”Le due subroutine di evento seguenti devono essere inserite in un modulo della cartella di lavoro Excel. XLS Padlock le richiamerà automaticamente durante il processo di salvataggio e caricamento.
' 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 SubFunzioni dell’API VBA
Section titled “Funzioni dell’API VBA”- WriteCustomCellValue(UniqueID, Value): scrive un singolo valore stringa associato a un identificatore univoco.
- ReadCustomCellValue(UniqueID, DefaultValue): legge un singolo valore stringa per un dato identificatore. Se l’identificatore non viene trovato, la funzione restituisce
DefaultValue.
Lettura e scrittura di valori singoli
Section titled “Lettura e scrittura di valori singoli”Ecco come scrivere un singolo valore:
Sub XLSPadlock_SaveCustomValues() Dim XLSPadlock1 As Object On Error Resume Next Set XLSPadlock1 = Application.COMAddIns("GXLS.GXLSPLock").Object XLSPadlock1.WriteCustomCellValue "MySetting", "MyValue"End SubEd ecco come rileggerlo:
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 SubLettura di tutti i valori come dizionario
Section titled “Lettura di tutti i valori come dizionario”È inoltre possibile leggere tutti i valori personalizzati salvati in una sola volta passando una stringa vuota come identificatore a ReadCustomCellValue. Ciò restituisce un oggetto Scripting.Dictionary.
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 SubEsempio completo: salvataggio/ripristino di una colonna
Section titled “Esempio completo: salvataggio/ripristino di una colonna”Questa funzione di supporto genera una stringa separata da virgole a partire dai valori di un dato intervallo di celle.
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 FunctionQuesto evento viene richiamato quando l’utente salva il proprio lavoro. Utilizza la funzione di supporto per convertire l’intero intervallo utilizzato della colonna A in un’unica stringa e la salva.
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 SubQuesto evento viene richiamato quando l’utente carica un file di salvataggio. Legge la stringa e ripristina i valori nella colonna A.
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
## See Also
- [How to migrate user data from a previous version](excel-vba-migrate-user-data-updates)