Macro salvare foglio attivo



  • Macro salvare foglio attivo
    di Magnoz (utente non iscritto) data: 24/04/2012

    Salve
    non sono un grande esperto di vba per cui spero che qualcuno mi possa aiutare.
    espongo il mio problema: ho un file excel contenente diverse sheet di lavoro.
    vorrei creare una macro (da legare all'evento stampa) che:
    1 - in automatico mi salvi una copia di backup del foglio attivo(possibilmente rimuovendo tutte le formule presenti nelle varie celle e mantenendo lo stesso formato del foglio di orgine).
    2 - il nome del file di backup deve essere uguale: al nome del foglio attivo + il valore di una cella (b16) + il valore di una cella (b15)(attenzione in questa cella è presente una formula nel file originale).

    questo è quanto spero di essere stato chiaro, ma non credo, cmq in
    ogni caso grazie mille per l'aiuto







  • di Harrybosch data: 15/06/2012

    Ciao magnoz,
    non so se ho capito bene, ho inteso in questo modo:
    con questo codice copi il foglio aperto in un nuovo file, che assumerà il nome del foglio stesso con l'aggiunta delle celle che hai indicato.
    nel codice bisogna indicare il percorso di salvataggio, ho lasciato quello con cui ho testato la macro, oppure puoi scegliere di salvare nella stessa cartella del file di origine (activeworkbook.path).
    infine, se vuoi legare la macro ad un evento di stampa puoi inserire il secondo codice: sub stampa() che subito dopo aver stampato creerà il backup del foglio aperto.

    se non ti è chiaro qualcosa o, intendevi diversamente, fammi sapere...
    ciao, vanni

     
    Sub BackupFoglioAttivo()
    
    'assegno le variabili
    Dim nf, nomefile, p As String
    Dim Sht As Worksheet
    
    'la variabile nf assumerà il nome del foglio attivo
       nf = ActiveSheet.Name
    'nomefile diventerà il nome del foglio + il valore della cella b16 + della cella b15
       nomefile = nf & [b16] & [b15]
      
     'attenzione: qua assegni il percorso dove salvare una copia del foglio di origine; per esempio cartella prova
    ' se dopo l'uguale inserisci ActiveWorkbook.Path salverà i nuovi file all'interno della stessa cartella del foglio origine
       percorso = "C:UsersVanniDesktopprova"
     'copio il foglio attivo nella nuova cartella e nomino il file come la variabile
       ActiveSheet.Copy
       ActiveWorkbook.SaveAs percorso & "" & nomefile & "  "
       
    'il foglio aperto sarà quello copiato, quindi ora trasformo tutte le formule del foglio in valori 
        Application.ScreenUpdating = False
        For Each Sht In Worksheets
           With Sht
           .Select
           Range(.UsedRange.Address) = (Range(.UsedRange.Address))
      
    'se ti interessa, così si nomina anche il foglio interno con lo stesso nome del file 
               ActiveSheet.Name = nomefile
    'salvo la nuova cartella ed esco
               ActiveWorkbook.Save
           End With
        Next Sht
    
    'chiudo il nuovo file creato
        ActiveWorkbook.Close
    
    'se non ci sono altre istruzioni resterà aperto il file di origine
    End Sub
    
    
    
    Sub stampa()
    ActiveSheet.PrintOut
    Call BackupFoglioAttivo
    End Sub