Calogero Rifici diffondere la conoscenza del VBA.

Calogero_Rifici

My Links

Categorie Post

Categorie Articoli

Archivio

Immagini

Blog Stats

excelVBA

AutoBackup di file XLS

         Succede che dopo aver fatto un ordinamento poco attento, un copia & incolla selvaggio, ecc. ecc., ci accorgiamo che i nostri dati non sono più coerenti.

A questo punto se non abbiamo salvato è male di poco, chiudiamo e siamo salvi, ma se nel frattempo abbiamo effettuato un salvataggio, mettiamo mano al calendario( per non dimenticarsi qualche Santo, vedi mai si offende).

 

Per evitare di scomodare i beati, ho realizzato un modello .xlt da utilizzare come base di partenza, per i nostri file .xls.

La particolarità di questo modello è che ad ogni avvio previo nostra approvazione crea una copia di sicurezza del nostro file.

Non servono molte spiegazioni per  il codice, in quanto è ampiamente commentato.

Ho pensato di fare due versioni:

La prima al momento del salvataggio aggiunge la stringa “Bk_” al nome del file

La seconda invece aggiunge la stringa composta da data & ora sempre al nome del file.

 

 

       Aggiunge BK

 

Option Explicit

Private Sub Workbook_Open()

' Dichiariamo eplicitamente le variabili

 

Dim ST_NomeAttuale As String 'nome del file attuale

Dim ST_NomeBK As String 'nome del file di bk

Dim ST_File As String 'nome del file cmd

Dim ST_Lancia As String 'variabile di servizio

Dim ST_Message As String ' Imposta il messaggio.

Dim ST_Titolo As String ' Imposta il titolo

Dim ST_Predefinito As String ' Valore predefinito

Dim ST_Scelta As String ' Valore Scelto

 

' Facciamo aprire la finestra che ci chiede se vogliamo far aeffettuare il salvataggio di BK

ST_Message = "Questo finestra serve a decidere se si vuole fare una copia di bk del file"  ' Imposta il messaggio.

ST_Titolo = " Lasciare SI se si vuole fare la copia  "  ' Imposta il titolo.

ST_Predefinito = "SI"

ST_Scelta = InputBox(ST_Message, ST_Titolo, ST_Predefinito)

 

' A questo punto sappiamo se l’utente effettuare il salvataggio se si proseguiamo altrimenti usciamo.

 

    If ST_Scelta = "SI" Then

    ST_NomeAttuale = ActiveWorkbook.Name ' assegno alla variabile il nome del file attuale

    ST_NomeBK = "Bk_" & ActiveWorkbook.Name ' assegno alla variabile il nome del file di bk

    ST_File = ActiveWorkbook.Path & "\CopiaFile.cmd" ' assegno alla variabile il nome completo del file di comandi

 

' Creiamo il file di comandi

 

    Open ST_File For Output As #1 ' Apre il file.

    Print #1, "copy " & ActiveWorkbook.Path & "\" & ST_NomeAttuale & " " & ActiveWorkbook.Path & "\" & ST_NomeBK

    Print #1, "pause" 'da inserire se non volete la chiusura automatica del file cmd

    Close #1 ' chiudo il file cmd

    ST_Lancia = Shell(ST_File, 1) ' lancia il file dei comendi

    MsgBox "Il File " & ST_NomeAttuale & " è stato copiato " & ST_NomeBK

' avvisiamo che la copia è andata a buon fine

 

    Kill ST_File ' elimino il file di comandi

    End If

   

End Sub

 

 

        Aggiunge Data & Ora

 

Option Explicit

Private Sub Workbook_Open()

' Dichiariamo eplicitamente le variabili

 

Dim ST_NomeAttuale As String 'nome del file attuale

Dim ST_NomeBK As String 'nome del file di bk

Dim ST_File As String 'nome del file cmd

Dim ST_Lancia As String 'variabile di servizio

Dim ST_Message As String ' Imposta il messaggio.

Dim ST_Titolo As String ' Imposta il titolo

Dim ST_Predefinito As String ' Valore predefinito

Dim ST_Scelta As String ' Valore Scelto

Dim ST_DataOra As String ' Valore Scelto

 

' Facciamo aprire la finestra che ci chiede se vogliamo far aeffettuare il salvataggio di BK

ST_Message = "Questo finestra serve a decidere se si vuole fare una copia di bk del file"  ' Imposta il messaggio.

ST_Titolo = " Lasciare SI se si vuole fare la copia  "  ' Imposta il titolo.

ST_Predefinito = "SI"

ST_Scelta = InputBox(ST_Message, ST_Titolo, ST_Predefinito)

 

ST_DataOra = Date & "_" & Time & "_"

ST_DataOra = Replace(ST_DataOra, "/", "_") ' trasformo tutti i caratteri "/" in "_"

ST_DataOra = Replace(ST_DataOra, ".", "_") ' trasformo tutti i caratteri "/" in "_"

ST_DataOra = Replace(ST_DataOra, " ", "_") ' trasformo tutti gli spazi in "_"

 

' A questo punto sappiamo se l’utente effettuare il salvataggio se si proseguiamo altrimenti usciamo.

 

    If ST_Scelta = "SI" Then

    ST_NomeAttuale = ActiveWorkbook.Name ' assegno alla variabile il nome del file attuale

    ST_NomeBK = ST_DataOra & ActiveWorkbook.Name ' assegno alla variabile il nome del file di bk

    ST_File = ActiveWorkbook.Path & "\CopiaFile.cmd" ' assegno alla variabile il nome completo del file di comandi

 

' Creiamo il file di comandi

 

    Open ST_File For Output As #1 ' Apre il file.

    Print #1, "copy " & ActiveWorkbook.Path & "\" & ST_NomeAttuale & " " & ActiveWorkbook.Path & "\" & ST_NomeBK

    Print #1, "pause" 'da inserire se non volete la chiusura automatica del file cmd

    Close #1 ' chiudo il file cmd

    ST_Lancia = Shell(ST_File, 1) ' lancia il file dei comendi

    MsgBox "Il File " & ST_NomeAttuale & " è stato copiato " & ST_NomeBK

' avvisiamo che la copia è andata a buon fine

 

    Kill ST_File ' elimino il file di comandi

    End If

   

End Sub

 

 

http://www.rifici.it\public\AutosalvataggioIniziale.zip

 

?>

posted on domenica 24 settembre 2006 19.57