Sicurezza contro curruzione file excel
Hai un problema con Excel? 
Sicurezza contro curruzione file excel
di Emmepi (utente non iscritto) data: 20/10/2016 13:08:38
Ecco il mio problema.
Ho un database che aggiorno quasi quotidianamente. Un database con diversi fogli e tabelle con poche formule ma molte colonne formattate graficamente.
Oggi è la quarta volta (in qualche anno) che mi si corrompe il file. Ho dovuto sempre recuperare un file salvato precedentemente ma sempre vecchio di qualche settimana (se non mesi) dovendo poi ricostruire tutte le voci mancanti con un lavoro davvero faticoso... L'ultima volta ho avuto fortuna recuperando una copia vecchia di solo un paio di settimane usando un sw di recupero dati sull'HD...
Tralasciando il recupero del file corrotto (non ci si riesce mai...) oggi posso usare una copia vecchia di una sola settimana, anche se in questa settimana ci avevo messo pesanti cambiamenti che dovrò rifare.
Quello che vorrei sapere è se possa esistere la possibilità di avere in automatico una copia sempre aggiornata del file senza dover salvare manualmente lo stesso in 2 cartelle differenti.
Non prendo in considerazione OneDrive o simili. Usavo OneDrive e spesso non avevo le copie sincronizzate, col risultato che mettevo mani alla penultima copia e mi creava casini... Forse perchè il database excel lo modificavo da casa e dall'ufficio... comunque il sincro non c'era quasi mai.
Esiste una qualche utility che mi faccia salvare il automatico il file in 2 cartelle differenti?
o in alternativa una utility che crei il backup automatico del file non appena questo venga salvato?
Vorrei evitare in futuro per l'ennensima volta di ritrovarmi il file corrotto!
di alfrimpa data: 20/10/2016 13:44:15
Ciao emmepi
Non hai bisogno di nessuna utility.
La macro che vedi sotto, da inserire nel modulo di ThisWorkbook, al momento della chiusura del file te ne salva una copia con lo stesso nome in altra directory che devi specificare nel punto indicato.
Prova e fai sapere.
Alfredo
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim myPath As String
Dim nomefile As String
myPath = "c:TuoPercorso" ' Modifica con la directory dove vuoi salvare il file
nomefile = ActiveWorkbook.Name
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=myPath & nomefile & ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Application.DisplayAlerts = True
End Sub |
di emmepi (utente non iscritto) data: 20/10/2016 13:50:07
Stasera la provo.
Volendo si potrebbe salvare anche in 2 altre cartelle?
di alfrimpa data: 20/10/2016 13:56:16
Cit. "Volendo si potrebbe salvare anche in 2 altre cartelle?"
Prova con la macro qui sotto che ho messo in Workbook_BeforeSave (io ho provato e funziona).
In questo modo ritengo che tu possa essere abbastanza garantito.
Io non so quali possano essere i motivi per i quali un file si corrompe; se la corruzione avviene quando il file è in uso e questo viene salvato penso che questo rimanga corrotto (non ho mai avuto esperienze in questo senso).
Tieni presente che la macro salva e sostituisce il vecchio file con lo stesso nome.
Prova e fai sapere.
Alfredo
Private Sub Workbook_BeforeSave(Cancel As Boolean)
Dim i As Integer
Dim myPath1 As String
Dim myPath2 As String
Dim myPath3 As String
Dim nomefile As String
On Error Resume Next
myPath1 = "c:TuoPercorso" ' Modifica con la directory dove vuoi salvare il file
myPath2 = "c:TuoPercorso" ' Modifica con la directory dove vuoi salvare il file
myPath3 = "c:TuoPercorso" ' Modifica con la directory dove vuoi salvare il file
nomefile = ActiveWorkbook.Name
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=myPath1 & nomefile & ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveWorkbook.SaveAs Filename:=myPath2 & nomefile & ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveWorkbook.SaveAs Filename:=myPath3 & nomefile & ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Application.DisplayAlerts = True
End Sub
|
di emmepi (utente non iscritto) data: 20/10/2016 14:34:49
Grazie di nuovo, la proverò.
Il problema credo derivi dal fatto che il file è su un hd esterno usb.
Spesso non si riesce a fare la rimozione sicura, rimane sempre "in uso" anche se con le utility mi da NO-LOCK.
Quindi a volte lo stacco in questi casi (non potendo spegnere il PC) ma aspetto che comunque non ci sia attività sul disco, passando anche ore prima che si verifichi. Forse è questo che causa la corruzione di file excel...
di alfrimpa data: 20/10/2016 14:36:54
Non ho HD esterni/usb per cui non saprei risponderti.
Alfredo
di emmepi (utente non iscritto) data: 21/10/2016 15:11:56
Innanzitutto grazie dell'aiuto.
La prima routine funziona, la seconda con il doppio (triplo) salvataggio del file, da un errore di compilazione:
"La dichiarazione della routine non corrisponde alla descrizione dell'evento o della routine con lo stesso nome"
Inoltre c'è una cosa molto strana, provando con la prima routine, va tutto bene, crea una copia del file, però il file risultante è quasi un terzo del "peso" dell'originale.
Il database originale attuale è di 17,6 MB e la copia che esce è di 6,25 MB
L'ho aperto ed esaminato e sembra comunque esserci tutto!!!
Altra cosa che vorrei sapere è come mai nel file che viene copiato hai scelto di aggiungere l'estenzione .xlms? Forse per l'eventualità che lo si voglia salvare nella stessa cartella dell'originale? In modo da reare una copia di backup e non salvarlo su se stesso?
Poi per finire "abuso" della tua pazienza e professionalità...
Si potrebbe nella routine scegliere se salvare o no la copia di backup in uscita dal database?
Dico questo perchè potrebbe capitare che delle modifiche fatte io non voglia salvarle e per questo esco senza salvare il file, però la routine salva la copia lo stesso...
Scusami se approfitto troppo... tempo addietro i misi a studiare un pò il visual basic per le routine excel, ma poi ho lasciato perdere...
PS: grazie davvero di cuore.
di alfrimpa data: 21/10/2016 16:16:49
Ora sono in partenza ti rispondo lunedì.
Per quanto riguarda l'errore dovrei provare
L'estensione .xlsm si riferisce a file con macro e .xlsx a quelli senza.
Per quanto riguarda la dimensione del file non saprei
A lunedì
Alfredo
Vuoi Approfondire?