Macro salvare foglio attivo
Hai un problema con Excel? 
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
|
Vuoi Approfondire?