|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2008
Città: Reggio Emilia
Messaggi: 85
|
[Visual Basic] numerazione progressiva, salvataggio file, stampa, cancella dati
Ormai è da qualche giorno che sbatto la testa su migliaia di pagine trovate grazie a google, ma purtroppo mai pescato nulla di completo e la mia completa ignoranza in materia non mi permette di comprendere le varie macro trovate per poterle integrare tra di loro.
Sostanzialmente avrei bisogno di questo: Alla pressione di un tasto una numerazione progressiva nella casella "S2" del tipo "AA0000001", di salvare in una directory precisa il file con il nome "nome_file_AA0000001.xls" e stampare il documento senza però alterare il file iniziale eccetto che per il numero progressivo. Se ho ben capito il tutto dovrebbe collegarsi ad un pulsante al quale assegno la macro e fin qui credo di cavarmela....purtroppo il problema rimane la macro! Qualche anima pia che vuole aiutarmi? 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 ╣← Ultima modifica di Michell : 27-03-2011 alle 12:19. |
![]() |
![]() |
![]() |
#2 | |
Member
Iscritto dal: Dec 2005
Messaggi: 44
|
Quote:
puoi fare a$="nome_file_" + "AA0000001" + ".xls" bye bye... |
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Dec 2008
Città: Reggio Emilia
Messaggi: 85
|
Grazie mille per il tuo contributo.
Cerco di spiegarmi meglio. Su un foglio excel (mi serve per lavoro e vista la crisi sto cercando di arrangiarmi) ho fatto un modulo per le spedizioni (ma stesso procedimento vale per le fatture). Su questo foglio ho un tasto al quale vorrei assegnare una macro che in sequenza faccia le seguenti cose: - Numerazione progressiva nella cella "S2" - Salvataggio in un percorso preciso (senza però modificare il file iniziale) con nome file che contenga la numerazione progressiva. - Avvio processo di stampa. Appena sono d'avanti al pc faccio un copia/incolla delle varie macro che ho trovato ma che non riesco a combinare....mi da sempre qualche errore! 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 ╣← |
![]() |
![]() |
![]() |
#4 |
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 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 Codice:
ActiveWindow.SelectedSheets.PrintOut Copies:=1 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 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 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 ╣← |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
ActiveWorkbook.Close
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Dec 2008
Città: Reggio Emilia
Messaggi: 85
|
Grazie mille, ma dove lo devo mettere?
Come detto nel VBA sono davvero e totalmente ignorante e le macro sopra riportate sono quasi interamente copiate da internet. Michell Edit....come non detto...l'ho messo alla fine della macro che salva con il nome e funziona tutto....nel copia incolla mi era saltata una lettera! Grazie mille ancora!!
__________________
→ ╠ 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 ╣← Ultima modifica di Michell : 28-03-2011 alle 12:08. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:00.