Condividi tramite

Backup file Excel

Anonimo
2013-05-08T13:51:27+00:00

Ciao a tutti!

Ogni giorno devo inserire dati in un file Excel 2007... e non vorrei che un bel giorno mi capitasse che il file risultasse danneggiato e non si aprisse, perdendo così tutti i dati... Ogni tanto per sicurezza faccio un Copia-Incolla del file in un'altra cartella...  Mi era venuta l'idea di creare una routine che:

  1. Eseguisse una copia del file "C:\PercorsoFile\NomeFile.xlsx" e la salvasse 

    in "C:\PercorsoBackup\NomeFile.xlsx"

  1. Si attivasse ogni volta che premo il pulsante SALVA nel file... e anche nel caso in cui (chiudendo il file

    senza aver salvato le modifiche) esce la finestrella con scritto: "Salvare le modifiche apportate a 

    'NomeFile.xlsx'", e io premo il pulsante SALVA. 

  1. Sovrascrivesse il vecchio backup (o eliminasse il vecchio backup e salvasse poi quello nuovo).

    O forse sarebbe meglio mantenere salvati gli ultimi 3 o 4 backup?

Volevo chiedervi qualche consiglio, e come potrei fare?

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-05-08T15:17:18+00:00

<cut>

Spero di esserti stato utile.

Ciao,

Andrea.

L'OP voleva *sovrascrivere* il vecchio backup e ottenere il backup *anche* premendo Salva, oppure uscendo senza salvare(e questo non lo capisco...). Comunque, il codice volendo utilizzare vb, al limite sarebbe questo, da copia/incollare nel modulo di Thisworkbook/Questa_cartella_di_lavoro:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Call mSalvaBackup

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Call mSalvaBackup

End Sub

Private Sub mSalvaBackup()

    If Me.Name <> "backup.xlsm" Then

    On Error Resume Next

        Me.SaveCopyAs "C:\Provabackup\backup.xlsm"

    End If

End Sub

Modificate la path ed il nome del file con i vostri.

La risposta è stata utile?

0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-05-12T14:47:43+00:00

    Grazie dell'aiuto Andrea!

    Di niente,

    Un saluto,

    Andrea.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2013-05-11T23:05:35+00:00

    se  intendi, come hai detto, eseguire il salvataggio in automatico sia all'uscita dall'applicazione (senza salvare) sia premendo SALVA, devi utilizzare il codice proposto da Mauro, e cioè:

    avevo scritto:

     "Volevo salvare un backup quando si preme SALVA, nel file oppure (equivalentemente) nella finestrella che appare quando..."

    ... ovviamente se nella finestrella premo NON SALVARE allora non ha senso fare il backup del file...

    quindi può andar bene il mio codice sostituendo [Me.Name & ".xlsm"] con [ActiveWorkbook.Name] :


    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

       Dim Ultimo As String

       Dim Penultimo As String

       On Error Resume Next

       Ultimo = "C:\PercorsoBackup\Ultimo_" & ActiveWorkbook.Name 

       Penultimo = "C:\PercorsoBackup\Penultimo_" & ActiveWorkbook.Name 

       If Dir(Ultimo) <> "" Then

          If Dir(Penultimo) <> "" Then

             Kill Penultimo

          End If

          Name Ultimo As Penultimo

       End If

       Me.SaveCopyAs Ultimo

    End Sub


    Grazie dell'aiuto Andrea!

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  3. Anonimo
    2013-05-08T14:57:07+00:00

    <cut>

     

    Volevo chiedervi qualche consiglio, e come potrei fare?

    Come complicarsi la vita....

    • Pulsante Office
    • Opzioni di Excel(in basso)
    • Salvataggio(a sx)
    • A dx puoi impostare tempi e path di salvataggio

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-05-08T14:50:31+00:00

    Ciao,

    si può utilizzare l'evento Workbook_BeforeClose che si può attivare nel modulo ThisWorkbook.

    La routine che ti allego esegue in automatico una copia della cartella sulla quale stai lavorando quando la chiudi. Il nome utilizzato per il salvataggio è così composto: aaa_mm_gg_NomeFile.xlsx, in modo da mantenere copie differenti per ogni giorno.

    Lascio, infine, a te la gestione ... manuale delle copie, decidendo per quanto tempo mantenerle o cancellarle.

    Ricordati di inserire il codice nel modulo ThisWorkbook.

    Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Dim sFileName As String

    sFileName = Format(Now(), "yyyy_mm_dd") & "_" & ActiveWorkbook.Name

    ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "" & sFileName

    End Sub

    Spero di esserti stato utile.

    Ciao,

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento