Condividi:        

File excel salvato automaticamente

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

File excel salvato automaticamente

Postdi BG66 » 15/12/17 10:16

Ciao,
può succedere di trovarmi in queste condizioni:
Immagine
Sembra che in alcuni momenti e non per tutti gli impianti il file non trovando libero il collegamento al server o per altro motivo a me sconosciuto si "auto protegga" creando una copia in automatico.
Purtroppo gli addetti in produzione poi continuano a lavorare su questo file e mi ritrovo a non avere le informazioni aggiornate.

A vostra esperienza c'è un modo che imponga al file che se si " accorge" di aver nel proprio nome un suffisso tra parentesi di provare a salvare sovrascrivendo quello originale ma che è diventato dormiente.
Per capirci:
- T03_DICEMBRE_2017.xlsm diventa dormiente a causa della creazione di T03_DICEMBRE_2017(salvato automaticamente).xlsm
- Excel si accorge dell'accadimento e prova a riportarlo alle origini ( ossia salvarlo, sovrascrivendo e riprendendo ad utilizzare il dormiente).

Basterebbe che questo check fosse fatto anche una sola volta al giorno o integrandola nell'aiuto di Anthony nel mio thread precedente:
Anthony47 ha scritto:Ecco spiegato...
Nel modo adottato non solo si ritrovano solo 3 esecuzioni schedulate, ma se l'operatore non preme Ok ci si ferma alla prima.

Facciamola semplice, almeno ci provo:
1) Crea una nuova Sub Schedula:
Codice: Seleziona tutto
Sub Schedula()
On Error Resume Next
Application.OnTime TimeValue("06:06"), "Schedula", , False
Application.OnTime TimeValue("14:06"), "Schedula", , False
Application.OnTime TimeValue("22:06"), "Schedula", , False
On Error GoTo 0
Call AggPROD
Application.OnTime TimeValue("06:06"), "Schedula"
Application.OnTime TimeValue("14:06"), "Schedula"
Application.OnTime TimeValue("22:06"), "Schedula"
End Sub

2) Nella Workbook_Open, sostituisci le attuali 3 righe di Application.OnTime TimeValue con
Codice: Seleziona tutto
On Error Resume Next
Application.OnTime TimeValue("06:06"), "Schedula", , False
Application.OnTime TimeValue("14:06"), "Schedula", , False
Application.OnTime TimeValue("22:06"), "Schedula", , False
On Error GoTo 0
Application.OnTime TimeValue("06:06"), "Schedula"
Application.OnTime TimeValue("14:06"), "Schedula"
Application.OnTime TimeValue("22:06"), "Schedula"

Il codice della Sub AggPROD e della Sub CallAggPROD rimane invariato.

La logica e' che all'apertura si eliminano eventuali schedulazioni rimaste pendenti e si impostano le nuove.
Lo stesso procedimento e' contenuto nella nuova Sub Schedula, che e' la macro eseguita su OnTime: si eliminano le schedulazioni pendenti, si esegue la AggProd, si impostano le prossime schedulazioni.

Incrociando le dita...


Grazie in anticipo per eventuali suggerimenti.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Sponsor
 

Re: File excel salvato automaticamente

Postdi Anthony47 » 15/12/17 15:27

Secondo me il problema e' da ricondurre a spegnimenti accidentali o crash di Excel, con conseguente recupero automatico del lavoro.
In queste situazioni, tocca all'utente valutare quale tra il file originale (all'ultimo salvataggio) e il file recuperato e' il migliore da cui partire.
Skippare questo processo e sovrascrivere il file originale col file recuperato si puo' fare ma mi sembra pericoloso.

Non mi sono fatto un'idea della complessita' dei tuoi file, ma secondo me dovresti pensare che sugli impianti produttivi devi avere lo stretto necessario; cioe' un "logger" (che si limita ad accodare in un file testuale gli eventi che devono essere recepiti dal "controllore") e un visualizzatore (che visualizza all'operatore dell'impianto le informazioni utili al suo lavoro).
In una sede centrale, un processo piu' complesso (ma tenuto sotto controllo da personale competente) raccoglie gli eventi dai logger, li integra con tutte le altre informazioni e le distribuisce agli impianti e a tutti gli altri utenti, per la quota di loro competenza. Lo so che non e' semplice, ma dovrebbe essere piu' "robusto".

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19215
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: File excel salvato automaticamente

Postdi BG66 » 15/12/17 19:09

Ciao Anthony,
effettivamente nel secondo semestre 2018 migraremo su un ERP che mi permetterà di mandare in cantina dei files nati con l'azienda e implementati con sudore e sangue.
In questa fase di transizione vorrei comunque ammattire il meno possibile quindi, anche a fronte di un rischio mi piacerebbe provarci ( se tu volessi aiutarmi ;) )
Anthony47 ha scritto:Secondo me il problema e' da ricondurre a spegnimenti accidentali o crash di Excel, con conseguente recupero automatico del lavoro.
In queste situazioni, tocca all'utente valutare quale tra il file originale (all'ultimo salvataggio) e il file recuperato e' il migliore da cui partire.
Skippare questo processo e sovrascrivere il file originale col file recuperato si puo' fare ma mi sembra pericoloso.


Grazie se puoi/vuoi.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: File excel salvato automaticamente

Postdi Zer0Kelvin » 17/12/17 01:36

Ciao.
Se proprio vuoi correre il rischio di sovrascrivere il file senza alcuna conferma si può intervenire con l'evento BeforeSave
Codice: Seleziona tutto
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If InStr(ThisWorkbook.Name, " (Salvato automaticamente)") > 0 Then
        Application.EnableEvents = False
        Application.DisplayAlerts = False
        ThisWorkbook.SaveAs Replace(ThisWorkbook.Name, " (Salvato automaticamente)", "")
        Application.EnableEvents = True
        Application.DisplayAlerts = True
        Cancel = True
    End If
End Sub
Al salvataggio, il file recuperato verrà rinominato ed andrà a sovrascrivere il file originale.

Si potrebbe anche eliminare il file duplicato
Codice: Seleziona tutto
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim OName As String
    If InStr(ThisWorkbook.Name, " (Salvato automaticamente)") > 0 Then
        Application.EnableEvents = False
        Application.DisplayAlerts = False
        OName = ThisWorkbook.FullName
        ThisWorkbook.SaveAs Replace(ThisWorkbook.Name, " (Salvato automaticamente)", "")
        Kill OName
        Application.EnableEvents = True
        Application.DisplayAlerts = True
        Cancel = True
    End If
End Sub
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: File excel salvato automaticamente

Postdi BG66 » 17/12/17 07:02

Ciao Z0K,
ho inserito la prima macro in "questo foglio di lavoro". Ho scelto ques'ultimaperchè il non cancellare il duplicato credo che mi possa aiutare nel capire se il tutto funziona.

Conoscendo la tua preparazione credo che un RISOLTO non sia un'azzardo ma in ogni caso sarà mia cura darti un feedback appena avrò un riscontro oggettivo.

Grazie ancora.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: File excel salvato automaticamente

Postdi Zer0Kelvin » 17/12/17 11:44

L'uniica incognita riguarda il suffisso " (Salvato automaticamente)" che deve corrispondere esattamente nel nome del file.
Non avendo sotto mano un vero file di ripristino mi sono affidato alla tua descrizione...
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: File excel salvato automaticamente

Postdi Anthony47 » 17/12/17 20:11

In aggiunta all'incognita indicata da Z0K, aggiungo che, sul mio PC, non sempre i file "Salvato automaticamente" sono nella stessa directory del file da cui si era partiti; questo potrebbe portare a strane situazioni...

Una volta ti avevo suggerito di usare una cella per scriverci data/ora dell'ultimo salvataggio file, in modo che un tuo file di monitoraggio potesse tenere conto dei salvataggi effettuati.
Anche per questo caso ti suggerirei di scrivere in una cella il Percorso+NomeFile e poi usare questa informazione per il ripristino del file "Salvato automaticamente"

Come pure, invece di cancellare il file originale io suggerirei di rinominarlo, lasciando a un esame successivo la decisione di cancellare questi file.

Detto cio', e supponendo che la cella dedicata allo scopo sia Sheets("forno_T09").Range("AP6"),
ecco dei tasselli per fare le varie cose.
1) Nella Sub Workbook_Open, compiliamo una sola volta il percorso+nome file:
Codice: Seleziona tutto
       With ThisWorkbook
            With Sheets("forno_T09")   '<<<
            .Unprotect Password:="pippo"
            If .Range("AP6") = "" Then .Range("AP6") = ThisWorkbook.FullName   'ADD
    nome = Split(ThisWorkbook.Name, "_")

Viene fatto dalla riga marcata ADD

2) Aggiungiamo qualche opzione nella Workbook_BeforeSave di Z0K
Codice: Seleziona tutto
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim OName As String, nFName As String
    If InStr(ThisWorkbook.Name, " (Salvato automaticamente)") > 0 Then
        Application.EnableEvents = False
        Application.DisplayAlerts = False
        'Controlla se Sheets("forno_T09").Range("AP6") contiene qualcosa:
        If ThisWorkbook.Sheets("forno_T09").Range("AP6") <> "" Then
            'rinomina vecchio file:
            nFName = Replace(ThisWorkbook.Sheets("forno_T09").Range("AP6"), ".xlsm", "", , , vbTextCompare) & Format(Now, "yy-mm-dd_hh-mm-ss") & ".xlsm"
            On Error Resume Next
            Name ThisWorkbook.Sheets("forno_T09").Range("AP6") As GivenLocation & nFName
            On Error GoTo 0
            'Salva con nuovo nome
            ThisWorkbook.Save ThisWorkbook.Sheets("forno_T09").Range("AP6")
        Else
        'Sheets("forno_T09").Range("AP6") e' vuoto
            OName = ThisWorkbook.FullName
            ThisWorkbook.SaveAs Replace(ThisWorkbook.Name, " (Salvato automaticamente)", "")
            Kill OName
        End If
        Application.EnableEvents = True
        Application.DisplayAlerts = True
        Cancel = True
    End If
End Sub


Le modifiche sono abbastanza evidenziate dai commenti.

La teoria e' che se Sheets("forno_T09").Range("AP6") contiene qualcosa allora si assume che sia il Percorso+FileName originale del file; si rinomina il vecchio file col suffisso "yy-mm-dd_hh-mm-ss" e si salva il file col nome memorizzato in AP6.
Se invece AP6 e' vuoto allora si procede come da idea originale.

Chiedo ovviamente il parere di Z0K su quanto detto e proposto.

Ciao!
Avatar utente
Anthony47
Moderatore
 
Post: 19215
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: File excel salvato automaticamente

Postdi Zer0Kelvin » 18/12/17 01:45

In effetti la mia era una soluzione minimale, basata esclusivamente su quanto esposto dall'OP.
L'ipotesi che il file recuperato possa trovarsi, per es. in una cartella temporanea, è tutt'altro che da scartare e mantenere comunque una copia dell'originale è senz'altro un'ottima idea.
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23


Torna a Applicazioni Office Windows


Topic correlati a "File excel salvato automaticamente":


Chi c’è in linea

Visitano il forum: Nessuno e 37 ospiti