Condividi:        

Macro che rinomina, sposta e chiude un file excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro che rinomina, sposta e chiude un file excel

Postdi systemcrack » 30/08/23 12:27

Ciao ragazzi, dopo mesi di assenza eccomi a richiedervi una mano su un problema che non riesco a risolvere:

Ho un file excel di cui ho già parlato qui che si chiama: "schema entrate OGGI" e che viene utilizzato tutto il giorno in ufficio.
Alla fine della giornata questo file viene salvato rinominato in un'altra sotto cartella tramite macro collegata ad un bottone.

Codice: Seleziona tutto
Sub salva_fine_giornata()

mEseguiSuono ("Q:\SCANNERTRASPORTI\DOC UFF TRASPORTI\[[[ [[[ SHEMA ENTRATE ]]] ]]]\sound-effects\StageWinSuperMario.wav")


Dim nomefile As String
Dim nomesalva

nomefile = "N:\GIORNI PASSATI\schema entrate"   'schema entrate
nomesalva = nomefile & " " & Format(Now(), "dd.mm.yy") & ".xlsm"
ActiveWorkbook.SaveAs Filename:=nomesalva

ThisWorkbook.Close SaveChanges:=False

End Sub

Se mi fermassi qui, mi ritroverei con due copie del file uno nominato "schema entrate OGGI" e l'altro "schema entrate + data salvataggio" (ospitato da un'altra cartella).

Quindi per evitare che rimanga il file "schema entrate OGGI", perchè il giorno successivo ne verrà generato un altro, ho aggiunto in "QUESTA CARTELLA DI LAVORO" prima che si chiuda il documento, una macro KILL per eliminare il file rimasto
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Kill "N:\schema entrate OGGI.xlsm"
End Sub

A questo punto però ogni volta che il file schema entrate OGGI viene chiuso si auto elimina e questo potrebbe avvenire anche non a fine giornata.

Mi dareste qualche suggerimento su come potrei fare senza complicarmi ulteriormente la vita? :lol:
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Sponsor
 

Re: Macro che rinomina, sposta e chiude un file excel

Postdi Marius44 » 30/08/23 15:00

Ciao
Occorre sapere se il file viene salvato col nuovo nome una sola volta al giorno.
Se la risposta, come penso, è sì allora basta inserire l'eliminazione del, chiamiamolo, vecchio file quando si rinomina e si salva.

Fai delle prove CON UNA COPIA, ovviamente.
Ciao,
Mario
Marius44
Utente Senior
 
Post: 658
Iscritto il: 07/09/15 22:00

Re: Macro che rinomina, sposta e chiude un file excel

Postdi systemcrack » 30/08/23 16:29

Marius44 ha scritto:Ciao
Occorre sapere se il file viene salvato col nuovo nome una sola volta al giorno.
Se la risposta, come penso, è sì allora basta inserire l'eliminazione del, chiamiamolo, vecchio file quando si rinomina e si salva.

Fai delle prove CON UNA COPIA, ovviamente.
Ciao,
Mario

Ciao Marius, si è proprio così ogni giorno il file viene salvato e sono 3 giorni che leggo e faccio delle prove, ma non riesco a capire dove sbaglio.
Ho provato a modificare la macro che salva (che è situata in un modulo) abbinata al bottone così:
Codice: Seleziona tutto
Sub salva_fine_giornata()

mEseguiSuono ("Q:\SCANNERTRASPORTI\DOC UFF TRASPORTI\[[[ [[[ SHEMA ENTRATE ]]] ]]]\sound-effects\StageWinSuperMario.wav")


Dim nomefile As String
Dim nomesalva

nomefile = "N:\GIORNI PASSATI\schema entrate"   'schema entrate
nomesalva = nomefile & " " & Format(Now(), "dd.mm.yy") & ".xlsm"
ActiveWorkbook.SaveAs Filename:=nomesalva

ThisWorkbook.Close SaveChanges:=False

Kill "N:\schema entrate OGGI.xlsm"

End Sub

Ma non funziona, cioè il "vecchio file" è sempre lì al termine del processo.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro che rinomina, sposta e chiude un file excel

Postdi Anthony47 » 30/08/23 21:00

Non capisco il problema...
Hai un file SchemaEntrate OGGI.xlsm, e ogni giorno salvi uno SchemaEntrate_Data.xlsm; perche’ dovresti cancellare SchemaEntrate OGGI.xlsm, che evidentemente funziona da “modello” su cui basare il file SchemaEntrate_Data.xlsm?
Forse pero’ sarebbe piu’ logico usare SaveCopyAs invece di SaveAs
Sono in viaggio, non sono in grado di fare pero’ prove per un paio di giorni
Avatar utente
Anthony47
Moderatore
 
Post: 19458
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro che rinomina, sposta e chiude un file excel

Postdi Marius44 » 31/08/23 06:23

Ciao
Forse intendi che il file SchemaEntrate OGGI.xlsm, dopo averlo salvato col nuovo nome (ha, come sempre, ragione @Anthony - buon viaggio - è meglio salvarlo come suggerisce) ritorni intonso per il prossimo giorno.
Se è così basta chiuderlo senza salvarlo e, alla prossima apertura, sarà "pulito" e pronto a ricevere i nuovi dati.

Ciao,
Mario
Marius44
Utente Senior
 
Post: 658
Iscritto il: 07/09/15 22:00

Re: Macro che rinomina, sposta e chiude un file excel

Postdi systemcrack » 31/08/23 08:17

In primis buon viaggio Anthony ;) spero sia per ferie e non per lavoro.
In secundis buongiorno Marius :D
Ammetto di non aver fatto le adeguate premesse e dall'ultima volta che ci siamo scritti, sono cambiate alcune cose perciò specificherò meglio:

la partenza è un file chiamato "schema entrate da duplicare" ogni mattina questo file viene copiato/incollato in un'altra cartella e rinominato "schema entrate OGGI". Questo file gira sulla rete interna aziendale ed è visualizzato (solo visualizzato, ci lavoriamo solo noi) da molti altri pc quindi viene salvato più e più volte durante l'arco della giornata perchè venga visualizzato sempre aggiornato.

Purtroppo queste modifiche sono richieste dalle diverse situazioni che si generano quando un operatore sbadato si sbaglia a scrivere il nome del file quando lo genera a ciò aggiungiamo che ancora oggi si incontrano persone che a malapena riescono ad accendere il pc o poco più di quello. Quindi dopo aver automatizzato il processo di duplicazione e rinominazione del file schema entrate, ora vorrei automatizzare la chiusura della giornata.

Ieri sera sono uscito prima e un altro collega ha provato la chiusura e così sembra funzionare, anche se dai primi test non sembrava affatto. Sta sera rifarò il test e vi saprò dire.

Codice: Seleziona tutto
Sub salva_fine_giornata()

mEseguiSuono ("Q:\SCANNERTRASPORTI\DOC UFF TRASPORTI\[[[ [[[ SHEMA ENTRATE ]]] ]]]\sound-effects\StageWinSuperMario.wav")

Dim nomefile As String
Dim nomesalva

nomefile = "N:\GIORNI PASSATI\schema entrate"   'schema entrate
nomesalva = nomefile & " " & Format(Now(), "dd.mm.yy") & ".xlsm"
ActiveWorkbook.SaveAs Filename:=nomesalva

ThisWorkbook.Close SaveChanges:=False

Kill "N:\schema entrate OGGI.xlsm"

End Sub
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro che rinomina, sposta e chiude un file excel

Postdi systemcrack » 01/09/23 07:37

No.. purtroppo non funziona se inserisco il comando nella macro contenuta nel modulo (come sopra).
Il comando Kill funziona solo se lo metto in Thisworkbook in beforeclose, ma non va bene perchè se il file viene chiuso prima del fine giornata per un qualsiasi motivo si autoelimina.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro che rinomina, sposta e chiude un file excel

Postdi systemcrack » 01/09/23 15:06

Aggiungendo una conferma utente funziona anche da modulo..

Codice: Seleziona tutto
Sub salva_fine_giornata()

mEseguiSuono ("Q:\SCANNERTRASPORTI\DOC UFF TRASPORTI\[[[ [[[ SHEMA ENTRATE ]]] ]]]\sound-effects\StageWinSuperMario.wav")

Dim nomefile As String
Dim nomesalva

nomefile = "N:\GIORNI PASSATI\schema entrate"   'schema entrate
nomesalva = nomefile & " " & Format(Now(), "dd.mm.yy") & ".xlsm"
ActiveWorkbook.SaveAs Filename:=nomesalva

ThisWorkbook.Close SaveChanges:=False

If MsgBox("ELIMINO SCHEMA ENTRATE OGGI?", vbQuestion + vbYesNo) = vbYes Then
Kill "N:\schema entrate OGGI.xlsm"
End If

End Sub


Anche se avrei preferito senza conferme da parte dell'utente.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro che rinomina, sposta e chiude un file excel

Postdi Anthony47 » 01/09/23 20:12

Bene che hai risolto, ma continuo a non capire perche’ e’ necessario cancellare quel file...
Avatar utente
Anthony47
Moderatore
 
Post: 19458
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro che rinomina, sposta e chiude un file excel

Postdi systemcrack » 02/09/23 08:08

Perché quando utilizzo il comando salva_fine_giornata una copia viene salvata rinominata in un altra cartella, a questo punto però rimane sempre il file schema entrate oggi, che durante l'arco della giornata è stato salvato più e più volte e quindi non può tornare all'originale, ma è li in mezzo i gabbasisi, come direbbe Montalbano. Quindi lo elimino perché il giorno dopo ne verrà "generato" un altro pulito.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro che rinomina, sposta e chiude un file excel

Postdi Anthony47 » 02/09/23 12:30

Quindi lo elimino perché il giorno dopo ne verrà "generato" un altro pulito.
Ma proprio perchè "domani" lo rigeneri pulito non vedo il bisogno di cancellarlo; comunque problema risolto, va bene così
Avatar utente
Anthony47
Moderatore
 
Post: 19458
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro che rinomina, sposta e chiude un file excel

Postdi systemcrack » 02/09/23 15:41

Sebbene mi dispiaccia non riuscire a farmi capire..si.. tutto è bene quel che finisce bene. Buon week end (anche a Marius ovviamente)!
Ps
Hai visto Anthony questo giro ci sono arrivato da solo.. piano piano sto capendo come gestirlo.
Quasi quasi provo a seguire il consiglio che mi deste per il codice riguardanti i pulsanti laterali dello schema, che ora sono realizzati con il registratore di macro.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro che rinomina, sposta e chiude un file excel

Postdi systemcrack » 06/09/23 11:33

Ciao ragazzi, buongiorno a tutti.. per onore della cronaca devo ammettere di avere detto una sciocchezza.. il comando di cancellazione, (che riporto di seguito), del file funziona solo se lo metto nella macro (before close) in ThisWorkBook e non nel modulo come precedentemente affermato.
Aggiungendo il messaggio, viene avvisato l'utente e il tutto sembrava funzionare bene..
Codice: Seleziona tutto
If MsgBox("ELIMINO SCHEMA ENTRATE OGGI?", vbQuestion + vbYesNo) = vbYes Then
Kill "N:\schema entrate OGGI.xlsm"
End If


Purtroppo però tutti quelli che guardano il file lanciatore, che richiama il file sugli altri computer, suggeritomi da Anthony qui, ricevono il messaggio ogni qualvolta si autoaggiorna il file.. c'è un modo per non fare visualizzare il messaggio se aperto da lanciatore?
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro che rinomina, sposta e chiude un file excel

Postdi systemcrack » 06/09/23 16:29

Giusto perchè l'argomento sia completo e la visione sia più completa, posto il link per scaricare i files su cui sto lavorando e cercherò d'essere ancora più dettagliato nello spiegare il mio "blocco".

Il pacchetto è composto da:

1) Shema Entrate da duplicare (lo modifico solo io tutti gli altri lo guardano e basta)

2) Generatore schema entrate (Lo uso io per generare il file schema entrate da duplicare che lo posiziona in una specifica cartella e lo rinomina in schema entrate oggi)

3) Lanciatore (viene utilizzato da tutti gli altri per visualizzare il traffico dati immesso nel file Shema entrate oggi)

Come trattato nei precedenti post, dopo tutto il giorno clicco sul pulsante Salva fine giornata che con questa macro:
Codice: Seleziona tutto
Sub salva_fine_giornata()

mEseguiSuono ("Q:\SCANNERTRASPORTI\DOC UFF TRASPORTI\[[[ [[[ SHEMA ENTRATE ]]] ]]]\sound-effects\StageWinSuperMario.wav")

Dim nomefile As String
Dim nomesalva

nomefile = "N:\GIORNI PASSATI\schema entrate"   'schema entrate
nomesalva = nomefile & " " & Format(Now(), "dd.mm.yy") & ".xlsm"
ActiveWorkbook.SaveAs Filename:=nomesalva

ThisWorkbook.Close SaveChanges:=False

End Sub

Ed il file viene salvato come copia rinominata in un'altra cartella in cui viene catalogato per data (inserita nel nome del file).

A questo punto alla fine del processo il file schema entrate oggi è ancora presente nella cartella e questo comporterà un avviso utente il giorno dopo quando genererà il nuovo file schema entrate oggi.

Quindi ho pensato di aggiungere un comando Kill (in ThisWorkBook) come detto sopra per eliminare il file schema entrate oggi superstite dalla giornata e non più utile.

Aggiungendo il comando Kill ogni volta che si chiude si corre il rischio di eliminare il file non nel momento giusto perciò ho aggiunto un msgbox per fare scegliere l'utente se cancellare o no il file. Sembrava tutto risolto, ma il messaggio compare anche a chi visualizza il file tramite lanciatore, (cosa a cui non avevo assolutamente pensato) che si refresha ogni 1 minuto, perciò gli utenti sono costretti a cliccare ogni min NO quando il file si chiude e poi si riapre (per visualizzare sempre i dati aggiornati).

A questo punto ho pensato d'avere 2 possibilità:

- Aggiungere una macro su lanciatore che seleziona NO automaticamente (ma non riesco a trovare online un esempio pratico da poter personalizzare per il mio caso)
- Aggiungo al Generatore schema entrate un SOVRASCRIVI, senza ovviamente messaggi di conferma (questo ancora lo devo cercare).

Dopo questa premessa spero che sia più chiaro il perchè di certe scelte, che non è detto siano corrette, perciò rimango aperto a qualsiasi consiglio che mi aiuti a togliermi da questo impiccio in cui mi sono incartato :aaah :lol:
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro che rinomina, sposta e chiude un file excel

Postdi Anthony47 » 06/09/23 20:31

Torno alla mia convinzione di sempre: non hai bisogno di killare il file a fine giornata, che ti costringerebbe a risolvere il dubbio “E’ veramente fine giornata?”
Come da tua seconda ipotesi, inserisci invece il Kill all’interno della procedura di Genera; ma probabilmente non serve nemmeno, perché, ad esempio, il comando SaveCopyAs Nomefile (che probabilmente usi per creare il tuo SchemaEntrateOggi partendo da GeneratoreSchemaEntrate) crea un file col nome Nomefile anche se ce ne fosse già uno con lo stesso nome, cioè già di suo sovrascrive file esistenti.

Se opti per killare, usa una sequenza del tipo
Codice: Seleziona tutto
On Error Resume Next
Kill Percorso + NomeCompleto
Application.Wait (Now + TimeValue("0:00:02"))
On Error GoTo 0
'Il codice per creare il nuovo file

Ciao

PS: il link per eventualmente scaricare i tuoi file punta al tuo disco, quindi e' inutilizzabile
Avatar utente
Anthony47
Moderatore
 
Post: 19458
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro che rinomina, sposta e chiude un file excel

Postdi systemcrack » 07/09/23 07:58

Anthony47 ha scritto:Torno alla mia convinzione di sempre: non hai bisogno di killare il file a fine giornata, che ti costringerebbe a risolvere il dubbio “E’ veramente fine giornata?”
Come da tua seconda ipotesi, inserisci invece il Kill all’interno della procedura di Genera; ma probabilmente non serve nemmeno, perché, ad esempio, il comando SaveCopyAs Nomefile (che probabilmente usi per creare il tuo SchemaEntrateOggi partendo da GeneratoreSchemaEntrate) crea un file col nome Nomefile anche se ce ne fosse già uno con lo stesso nome, cioè già di suo sovrascrive file esistenti.

Non avevo pensato a questa ipotesi..
Anthony47 ha scritto:Se opti per killare, usa una sequenza del tipo
Codice: Seleziona tutto
On Error Resume Next
Kill Percorso + NomeCompleto
Application.Wait (Now + TimeValue("0:00:02"))
On Error GoTo 0
'Il codice per creare il nuovo file

Ciao

Grazie Anthony.. farò qualche prova.

Anthony47 ha scritto:PS: il link per eventualmente scaricare i tuoi file punta al tuo disco, quindi e' inutilizzabile

mmmm strano.. ricontrollando il post il link inserito è questo:
Codice: Seleziona tutto
http://mrlab.altervista.org/SHEMA_ENTRATE.zip

lo spazio web di un mio sito in cui tratto attualità.. non il mio disco..
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro che rinomina, sposta e chiude un file excel

Postdi systemcrack » 07/09/23 08:18

Anthony47 ha scritto:Torno alla mia convinzione di sempre: non hai bisogno di killare il file a fine giornata, che ti costringerebbe a risolvere il dubbio “E’ veramente fine giornata?”
Come da tua seconda ipotesi, inserisci invece il Kill all’interno della procedura di Genera; ma probabilmente non serve nemmeno, perché, ad esempio, il comando SaveCopyAs Nomefile (che probabilmente usi per creare il tuo SchemaEntrateOggi partendo da GeneratoreSchemaEntrate) crea un file col nome Nomefile anche se ce ne fosse già uno con lo stesso nome, cioè già di suo sovrascrive file esistenti.

Accidenti! Avevi ragione Anthony!!! (@Marius44 avevi ragione pure tu :lol: )
Mi stavo complicando la vita per nulla.. il generatore sovrascrive ogni volta.

Vi auguro una buona giornata. ;)
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40


Torna a Applicazioni Office Windows


Topic correlati a "Macro che rinomina, sposta e chiude un file excel":


Chi c’è in linea

Visitano il forum: trittico69 e 10 ospiti