Questo articolo si rivolge a che ha già fatto un minimo di conoscenza con VBA, quindi è necessario sapere come entrare nell'ambiente editor VBA, cos'è una macro e magari come far partire la macro.
Vi spiego la funzionalità Sposta file in altra cartella con VBA con un esempio pratico che mi è stato posto nella mia azienda, ma ovviamente può essere usato per ogni problematica simile. Basta che ci siano i seguenti requisiti:
- una cartella contenente tutti i file
- i file sono nominati in maniera univoca, secondo un criterio ben definito
- si è in possesso di una lista con i file da spostare
Il problema da risolvere
In una cartella (di rete) nel giro del trimestre vengono salvati i PDF dei controlli effettuati su dei contatori gas. Il nome del file PDF contiene il PDR (punto di rifornimenti) del contatore gas, che è unico in tutta Italia e serve appunto per individuare esattamente il contatore ed a chi è intestata l'utenza.
Periodicamente vengono fatti dei controlli incrociati con il database dell'autorità per l'energia e a base delle liste estratte serve quindi "filtrare" i file PDF di questa cartella e spostarli in un altra cartella.
Ora uno può anche pensare di farlo a mano, ma nel mio caso stiamo parlando di numeri elevati che girano intorno ai 5.000 - 7.000 file e quindi farlo a manina rischi di finire al manicomio.
Impostazioni da fare sulla VBA
Per prima cosa viene portata la lista estratta in una tabella Excel, ma non è importante in quale colonna c'è il PDR. La colonna si può cambiare
nella VBA, vedi riga 17) nCol = 1, 1 = prima colonna, 2 = seconda colonna, ecc.
Se la lista NON sta sul primo foglio nella tabella Excel, allora bisogna modificare la VBA
nella VBA vedi la riga 19) nFoglio = 1, 1 = primo foglio, 2 = secondo foglio, ecc.
Poi va corretto il percorso della cartella d'origine
nella VBA vedi riga 14) strSource
e quella di destinazione; la destinazione può essere ovunque, non deve essere una sottocartella come nel mio esempio
nella VBA vedi riga 15) strTarget
Ora imposta anche il tipo di file da cercare, può essere qualsiasi tipo di file in quanto la ricerca si fa solo sul nome del file
nella VBA vedi riga 21) strEst = "pdf", cambiare p.e. in "xlsx" oppure "docx" ecc.
Avvertenza
In questa macro lo spostamento viene eseguito in due passi: prima si copia il file nella nuova cartella e dopo viene eliminato dalla cartella d'origine.
Questo perchè in VBA non esiste un comando diretto per spostare i file.
La riga 12) bTest = True determina se il file copiato viene eliminato dalla cartella di origine o meno.
Nella fase di Test (=true) il commando Kill cCFile nella riga 43) va saltato, invece impostando bTest = false il file viene eliminato senza nessun avvertimento.
Download: tabella sposta-file.xlsm
Buon lavoro!
Lascia il tuo commento