View Single Post
Old 27-03-2011, 12:15   #4
Michell
Member
 
Iscritto dal: Dec 2008
Cittā: Reggio Emilia
Messaggi: 85
Sono riuscito, finalmente, ad assemblare quello che serve a me.
La Macro qui riportata esegue i seguenti comandi (li inserisco nel caso dovessero servire a qualcun'altro e per i motori di ricerca):
+1 alla numerazione progressiva, stampa, salva con con nome in una directory specifica prelevando dati dalle celle e cancella i dati inseriti nel foglio che si usa come template.
Ecco la Macro:
Codice:
Sub Macro1()
   a = Cells(2, "s")
   a = a + 1
   Cells(2, "s") = a

ActiveWindow.SelectedSheets.PrintOut Copies:=1

Cartella = "C:\.........\"  'percorso completo su cui salvare, ricordarsi la barra inversa alla fine!
NomeFile = Range("S6").Value & Range("AJ1").Value & Range("S2").Value  'cella da cui prendere il nome file
NomeFoglio = "foglio1"        'nome esatto del foglio da copiare
If NomeFile = "" Then Exit Sub
If Right(NomeFile, 4) <> ".xls" Then NomeFile = NomeFile & ".xls"
Sheets(NomeFoglio).Copy
ActiveWorkbook.SaveAs Filename:=Cartella & NomeFile, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False

Windows("nome_file.xlsm").Activate
    Sheets("foglio1").Select
    Range( _
        "S6:AH6,S7:AH7,S8:AH8,E11:G12,M11:M12,O11:O12,Q11:Q12,U18:AG18,T19:AG19,T20:AG20" _
        ).Select
    Range("T20").Activate
    Selection.ClearContents
    Range("S6:AH6").Select
    ActiveWorkbook.Save

End Sub
Nota bene per i quanti avessero intenzione di usare questa macro:

Macro per numerazione progressiva dove (2, "s") indica, nel mio caso, la cella "S2"
Codice:
Sub Macro1()
   a = Cells(2, "s")
   a = a + 1
   Cells(2, "s") = a
Macro per la stampa
Codice:
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Macro per il salvataggio.
Personalizzare il percorso C:\...in base alle vostre esigenze e nel caso personalizzare "foglio1" in base alle vostre esigenze.
Codice:
Cartella = "C:\.........\"  'percorso completo su cui salvare, ricordarsi la barra inversa alla fine!
NomeFile = Range("S6").Value & Range("AJ1").Value & Range("S2").Value  'cella da cui prendere il nome file
NomeFoglio = "foglio1"        'nome esatto del foglio da copiare
If NomeFile = "" Then Exit Sub
If Right(NomeFile, 4) <> ".xls" Then NomeFile = NomeFile & ".xls"
Sheets(NomeFoglio).Copy
ActiveWorkbook.SaveAs Filename:=Cartella & NomeFile, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
Macro Che cancella i dati dal foglio che si usa come template.
Questa macro l'ho ricavata semplicemente usando la funzione registra macro e le celle riportate qui dentro sono quelle relative al mio foglio e che sicuramente non andranno bene per voi.
Codice:
Windows("nome_file.xlsm").Activate
    Sheets("foglio1").Select
    Range( _
        "S6:AH6,S7:AH7,S8:AH8,E11:G12,M11:M12,O11:O12,Q11:Q12,U18:AG18,T19:AG19,T20:AG20" _
        ).Select
    Range("T20").Activate
    Selection.ClearContents
    Range("S6:AH6").Select
    ActiveWorkbook.Save
Ora...per completare la macro e renderla perfetta mi manca solo una cosa.
Non riesco in nessun modo a trovare un comando che chiudi il file generato con il nome ricavato dalle celle che resta aperto e devo chiudere a mano!!
Ormai č una settimana che lavoro a questa macro e posso tranquillamente affermare che tramite google non c'č nulla che possa servirmi.
Nessuno che mi aiuti a rendere perfetta questa macro?

Michell
__________________
Case: HAF X ╣ ╠ Mobo: ASUS ROG Strix B450-F Gaming II ╣ ╠ Cpu: AMD Ryzen 5 5600X ╣ ╠ GPU: Geforce GTX 960 STRIX OC ╣ ╠ RAM: Corsair Vengeance RGB PRO Black DDR4-RAM 3600 MHz 4 x 8GB ╣ ╠ Monitor LCD: Samsung B1940MR (x3) ╣ ╠ Storage:Samsung 980 PRO M.2 NVMe 1TB x 2 + Samsung SSD 870 EVO 2 TB (x2) ╣ ╠ Mouse: MX Revolution ╣╠ Ali: Enermax Liberty ELT620AWT ╣
Michell č offline   Rispondi citando il messaggio o parte di esso