18/05/2023 - freddy60 ha scritto:
In Private Sub Workbook_BeforeClose(Cancel As Boolean), ho scritto quest'altro codice quando chiudo il programma:
Dim risposta As String
risposta = MsgBox("Queta copia esitste già, vuoi sostituirla?", vbYesNo, "AVVISO")
If risposta = vbYes Then
ThisWorkbook.SaveCopyAs nomecopia
Else
End If
Call SalvaUnaCopia
MsgBox "Bachup avvenuto con successo", vbInformation, "Informazione"
ThisWorkbook.SaveCopyAs nomecopia
End Sub
Vorrei aggiungere una considerazione, tanto per darti uno spunto e riflessione, in merito alla Sub sopra riportata.
La Sub è scritta…. diciamo malino? qui occorre un po' di impegno e logica :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
>> Eliminato dichiarazioni inutili e impostato IF con la logica corretta <<
If MsgBox("Queta copia esitste già, vuoi sostituirla?", vbYesNo, "AVVISO") = VbYes Then ThisWorkbook.SaveCopyAs nomecopia
Call SalvaUnaCopia >> Ma nella If sopra già fa un salvataggio se viene risposto Yes al MsgBox e qui fa un altro salvataggio?
Se questa Sub esegue la copia di Backup, il Messaggio di completamento di Andato a Buon Fine
su cosa si basa? quali sono i controlli per dire che il file di backup esiste? <<
MsgBox "Bachup avvenuto con successo", vbInformation, "Informazione" >>>>?????
ThisWorkbook.SaveCopyAs nomecopia >> qui viene riesiguita un altra copia del file excel ? perchè ?????
End Sub
Poi hai messo una parte di codice dove ci si interroga se si vuole o meno sostituire il vecchio file di backup con uno nuovo.
Logica sbagliata, se si richiede di eseguire un backup del file è perchè si vuole fare, o si conferma oppure no.
Il fatto che esiste già un backup a cosa porta, a cosa serve ? per non fare un nuovo backup perchè già ne esiste uno? Boh?????
Un flusso corretto sarebbe:
- Avvio comando per eseguire il Backup
- Richiesta di conferma
- “ Vuoi eseguire il Backup?” risposte: Yes or No
- Yes = esegue il Backup
- Controlli per confermare che il Backup è andato a buon fine
- Messaggio di Completamento: “Backup Eseguito”
- No = torna indietro e non esegue il Backup
- Chiusura della Sub
In ultimo sarebbe opportuno creare più copie di Backup se non altro per avere la possibilità di poter riprendere una vecchia versione del file. Magari quella di alcuni minuti o ore fa, oppure quella di ieri o dell'altro ieri, etc….
A tal fine nella cartella di Backup verranno mantenuti un certo numero di file di backup
Supponiamo di voler conservare gli ultimi 5 file di Backup
- Ogni file di Backup avrà un nome univoco, per esempio anteponendo al nome del file un Suffisso + data e ora del backup. Esempio:
- per il file excel di nome MyWorkExcel.Xlsm alle ore 17:50:35 del 18/05/2023 si esegue il backup che verrà salvato come:
- Bk20230518175035_MyWorkExcel.Xlsm
- alle 19:30:15 dello stesso giorno si esegue un nuovo backup e si otterrà un nuovo file:
- Bk20230518193015_MyWorkExcel.Xlsm
- il giorno successivo alle 08:15:45 viene eseguito un nuovo backup e si ottiene il file:
- Bk20230519081545_MyWorkExcel.Xlsm
- nella stessa giornata alle ore 20:05:25 viene eseguito un nuovo backup e si ottiene il file:
- Bk202305190200525_MyWorkExcel.Xlsm
- il giorno successivo alle 10:45:10 viene eseguito un nuovo backup e si ottiene il file:
- Bk20230520104510_MyWorkExcel.Xlsm
- supponiamo di voler conservare gli ultimi 5 Backup per poter risalire alle versioni precedenti del file in questione
- alla successiva richiesta di Backup:
- se il numero di Backup è Uguale o Maggiore di 5
- eliminare il file di backup più vecchio
- aggiungere il nuovo file di backup
- In questo caso nella Cartella di Backup saranno presenti sempre e solo gli ultimi 5 file di backup:
Bk20230518175035_MyWorkExcel.Xlsm | salvato il 18/05/2023 alle 17:50:35 |
Bk20230518193015_MyWorkExcel.Xlsm | salvato il 18/05/2023 alle 19:30:15 |
Bk20230519081545_MyWorkExcel.Xlsm | salvato il 19/05/2023 alle 08:15:45 |
Bk20230519200525_MyWorkExcel.Xlsm | salvato il 19/05/2023 alle 20:05:05 |
Bk20230520104510_MyWorkExcel.Xlsm | salvato il 20/05/2023 alle 10:45:10 |
Questo un piccolo e banale esempio di come pensare e organizzare delle copie di Backup che magari per un Foglio Excel può tornare utile per consultare o ripristinare delle vecchie versioni.
Ma un vero Backup, con o senza le versioni precedenti del file, si ottiene destinando almeno due copie in due siti diversi di destinazione (Server Remoti e con Provider diversi, Hardware remoti e sedi diverse, etc…), e non nello stesso Computer.
Vabbè, diciamo basta, non ti annoio più ;))