Copia del file



  • Copia del file
    di Fabio (utente non iscritto) data: 02/02/2016 15:54:25

    Buongiorno a tutti,
    ho un file (FILE.XLS) con una macro che mi aggiorna i dati.
    Per sicurezza, avrei bisogno che, prima di aggiornare i dati, mi si crei una copia del file con lo stesso nome ma in una nuova directory (come nome la data odierna)
    Praticamente, ora ho questa situazione:
    C:DATIFILE.XLS
    avrei bisogno che la macro mi aggiunga:
    C:DATI2.02.2016FILE.XLS
    Ho fatto qualche tentativo (anche leggendo i precedenti post) ma non riesco.
    Grazie a chi mi da qualche suggerimento.



  • di Luca.Donati data: 02/02/2016 17:09:28

    Suggerimento:
    Hai provato a mettere la funzione Now() nel nome del file?
    Se lo vuoi mettere in una directory datata, magari c'è la complicazione di verificare che esista prima di crearla.
    Ma io per esempio queste cose le faccio datando il nome del file in una directory unica di copie di sicurezza...
    Il Now() sta solo nel nome del file...



  • di Fabio (utente non iscritto) data: 02/02/2016 17:52:46

    Ciao Luca e grazie per il suggerimento.
    Ho provato, ma probabilmente sbaglio qualcosa, e mi da errore 1004
    Immagino che sia nel nome che memorizza: 02/02/2016 17.45.56
    Inserico il codice che ho provato.
    Grazie
     
    X = Now()
    Y = ThisWorkbook.Path & ""
    ActiveWorkbook.SaveCopyAs Y & X & ".xls"



  • di Mohican1989 data: 02/02/2016 20:56:00

    Un orribile workaround per darti una soluzione veloce e non una elegante, spero che qualcun altro proponga qualcosa di più bello perchè io a rifarla mi schiferei ^^
    Questa cambia la data da xx/xx/xxxx in xx-xx-xxxx, non mi ricordo se punti o altri segni possono essere usati sicuramente il "_". 

    EDIT: ovviamente togli il msgbox e metti savecopy as e non saveas ma ho visto che fila liscio lo stesso. in più come specificato dovresti verificare che il file non esisti già e nel caso la possibilità per sovrascriverlo.
     
    Sub Salva_COpia()
    Dim path As String
    path = "C:UsersUserDesktopProve Excel"
    Dim data As String
    data = Format(Date, ddmmyy)
    MsgBox (data)
    ActiveWorkbook.SaveAs path & data & ".xls"
    
    End Sub
    



  • di Fabio (utente non iscritto) data: 03/02/2016 09:28:09

    Scusa Mohican, ma forse sbaglio qualcosa.
    Ho provato il tuo suggerimento ma non mi cambia il formato della data e quindi va ancora in errore.
    Ti riporto il codice come l'ho provato.
    Grazie
     
    Sub Salva_COpia()
    Dim path As String
    path = "C:"
    Dim data As String
    data = Format(Date, ddmmyy)
    ActiveWorkbook.SaveCopyAs path & data & ".xls"
    End Sub



  • di patel data: 03/02/2016 09:31:11

    prova
     
    data = Format(Date, "ddmmyy")






  • di Fabio (utente non iscritto) data: 03/02/2016 09:48:32

    Perfetto, ora funziona.
    Grazie e tutti.



  • di Luca.Donati data: 03/02/2016 09:53:40

    Scusa se non ho il tempo di entrare nel tuo caso specifico.
    Però ho un codice con cui gestisco esattamente lo stesso tipo di operazione, in un modo leggermente diverso.
    Sono sicuro che ci troverai spunti per te, da adattare ovviamente.
    Io uso Now() con data, ora, minuti e addirittura secondi, in modo che sono sicuro che il file non esista e non ho bisogno di fare quel controllo (che cmq resta possibile...).

     
    Sub SalvaConNomeAdesso()
    'sono cambiate troppe cose - rivedere !
        Application.DisplayAlerts = False
        DkPerc 'questa è un'altra macro, che mi valorizza tutte le variabili di percorso che vedi sotto "TbPerc"
        ades$ = Format(Now(), "yyyy-mm-dd_hh-mm-ss")
        ade = Pulisci(ades) 'questa funzione pulisce con Replace() la stringa da eventuali caratteri fastidiosi, ma probabilmente è inutile
        ActiveWorkbook.SaveCopyAs FileName:=TbPerc(4, 2) & TbPerc(10, 2) & ade & ".xls"
        Application.DisplayAlerts = True
        'da fare: controlla quanti files esistono qui (Dir ?) e se sono >20 chiedi all'utente di pulire
    End Sub
    



  • di Fabio (utente non iscritto) data: 03/02/2016 10:00:48

    Grazie Luca per l'ulteriore suggerimento che mi divertirò a provare.
    Ne approfitto delle vostre capacità per chiedervi (visto che il file che copio è piùttosto grande) se è possibile crearlo zippato (oppure zipparlo dopo averlo copiato ed eliminando la copia).
    Grazie



  • di Luca.Donati data: 03/02/2016 10:25:00

    Fabio, personalmente non lo so fare, ma sono certo che Excel può "chiamare" delle applicazioni esterne e probabilmente anche Winzip o Winrar.
    Prova a farti una ricerca su Create Object oppure Shell.
    Una vecchia pagina da dove cominciare a studiare può essere h t t p : / / ennius.altervista.org / free / ifvba27.htm (togli gli spazi).