| | Post: 88 | Registrato il: 24/07/2013
| Città: SALERNO | Età: 52 | Utente Junior | Excel LTSC 2021 | | OFFLINE | |
|
05/10/2018 00:23 | |
Buona notte a tutti
Avrei bisogno di aiuto riguardo una macro che mi sposti file con nomi di clienti nelle relative cartelle
PREMESSA
A. Ho tre file.xlsx (nominati 'Paperino', 'Pippo', 'Pluto') nella Directory "C:\Users\Home\Desktop\Ordini\"
B. Grazie ad una Macro, ho potuto:
RINOMINARE detti file da elenco Excel
DA
'Paperino', 'Pippo', 'Pluto' (in Celle J6-J7-J8)
A
'Paperino2', 'Pippo2', 'Pluto2' (in Celle K6-K7-K8)
e SPOSTARLI automaticamente in altra directory "C:\Users\Home\Desktop\Clienti\"
ESIGENZA
Esiste la possibilità di una macro attraverso la quale i file rinominati 'Paperino2', 'Pippo2', 'Pluto2' e presenti nella Directory "C:\Users\Home\Desktop\Clienti\" vengano SPOSTATI nelle relative Directories
C:\Users\Home\Desktop\Clienti\Paperino\
C:\Users\Home\Desktop\Clienti\Pippo\
C:\Users\Home\Desktop\Clienti\Pluto\
elencate in Celle L6-L7-L8 e generate attraverso formula “CONCATENA”?
Spero di essere stato sufficientemente chiaro
Allego File di esempio e ringrazio anticipatamente per qualsiasi riscontro
Windows 10 - Excel LTSC |
|
| | Post: 1.938 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
05/10/2018 17:09 | |
ciao
non l'ho testato ma credo sia corretto
saluti
Sub Spostafile()
r = 6 'riga inizio dati
ur = Range("K" & Rows.Count).End(xlUp).Row
For j = r To ur
mFile = Cells(r, 11)
Filename = Mid(mFile, 1, InStr(mFile, ".") - 2)
OldDir = Cells(r, 12)
If Dir(OldDir & Filename, vbDirectory) = "" Then
MkDir OldDir & Filename
End If
Name OldDir & mFile As OldDir & Filename & "\" & mFile
DoEvents
Next j
End Sub
Domenico
Win 10 - Excel 2016 |
| | Post: 3.137 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
05/10/2018 19:27 | |
Buona sera, Pierpaolo; consentimi un caro saluto a Domenico. @dodo47 mi perdonerà, potrei sbagliarmi, ma credo che una piccola modifica vada vatta al Codice VBA. Voglio dire, credo che il Codice vada modicato da: a: Analogamente, credo che il Codice vada modicato da: a: Questo sempre che la "Directory Desiderata" esista già; altrimenti è necessario crearla preventivamente con un piccolo Codice VBA. Pierpaolo, fammi sapere se serve il Codice VBA per creare tutte le "Directories Desiderate" di destinazione. A disposizione. Buona serata. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 91 | Registrato il: 24/07/2013
| Città: SALERNO | Età: 52 | Utente Junior | Excel LTSC 2021 | | OFFLINE | |
|
05/10/2018 20:02 | |
Buonasera, Dodo47
Innanzi tutto grazie per la pazienza avuta nel leggere la descrizione del mio quesito.
Ho inserito il tutto nel VBA e, all’esecuzione della macro, mi si apre finestra di avviso con:
Errore di run-time ‘53’:
Impossibile trovare il file
Il successivo Debug evidenzia:
Name OldDir & mFile As OldDir & Filename & "\" & mFile
In verità, all’interno della directory in questione (C:\Users\Home\Desktop\Clienti\) la cartella ‘Paperino’ risulta creata; come risulta spostato in essa il relativo file ‘Paperino2’
Il resto, no.
Purtroppo non ho le conoscenze per capirne il perché
Puoi aiutarmi?
Windows 10 - Excel LTSC |
| | Post: 92 | Registrato il: 24/07/2013
| Città: SALERNO | Età: 52 | Utente Junior | Excel LTSC 2021 | | OFFLINE | |
|
05/10/2018 20:06 | |
Caro GiuseppeMN, piacere di risentirti.
Non avevo letto le modifiche da te suggerite.
Testo il tutto e ti aggiorno al più presto
Grazie
Windows 10 - Excel LTSC |
| | Post: 93 | Registrato il: 24/07/2013
| Città: SALERNO | Età: 52 | Utente Junior | Excel LTSC 2021 | | OFFLINE | |
|
05/10/2018 20:50 | |
Caro GiuseppeMN, il tuo suggerimento ha risolto il problema; anche se, nella seconda delle modifiche da te suggerite, forse intendevi
Da: OldDir = Cells(r, 12)
A: OldDir = Cells(j, 12)
Adesso va alla grande, avendola testata su un elenco di 16 file.
Non credo che troverò problemi quando imposterò l'elenco sui 100 che avevo in mente.
Riguardo la "Directory Desiderata", esiste già e, essendo solo una, non mi occorre altro codice (una volta tanto ;-) )
Grazie ancora per la tua immutata capacità di togliermi sempre le castagne dal fuoco (è periodo… )
Windows 10 - Excel LTSC |
| | Post: 94 | Registrato il: 24/07/2013
| Città: SALERNO | Età: 52 | Utente Junior | Excel LTSC 2021 | | OFFLINE | |
|
05/10/2018 21:00 | |
Un sentito grazie a Dodo47 per l'efficace soluzione proposta.
Sinceramente pensavo che il mio quesito potesse essere non risolvibile, oltre che seccante da leggere per la forma prolissa.
Invece qui trovo sempre persone con la soluzione giusta e la pazienza di leggere noi profani che, spesso, fatichiamo a spiegarci
Windows 10 - Excel LTSC |
| | Post: 1.939 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
06/10/2018 10:00 | |
Ringrazio GIUSEPPE per il suo intervento....comincio a preoccuparmi se faccio errori simili!!
Comunque se inesistenti, le directory vengono generate da quel codice.
saluti
[Modificato da dodo47 06/10/2018 10:02] Domenico
Win 10 - Excel 2016 |
| | Post: 95 | Registrato il: 24/07/2013
| Città: SALERNO | Età: 52 | Utente Junior | Excel LTSC 2021 | | OFFLINE | |
|
06/10/2018 16:00 | |
Buon pomeriggio, Dodo47
Hai buttato giù il codice in quattr'e quattr'otto, senza nemmeno testarlo e, alla fine, hai sforato giusto di un millimetro...
Magari li perdessi io i colpi così
Grazie ancora Windows 10 - Excel LTSC |
| | Post: 3.138 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
06/10/2018 16:05 | |
Buon pomeriggio a tutti. @pierpaolo.cavallo; grazie della tua precisazione che ho molto apprezzato, purtroppo un copia/incolla improvvido ha generato il mio errore. @dodo47; direi che parlare di errore è fuori luogo. Non ho ancora testato il tuo Codice VBA ma l'ho già inserito nelle Procedure da "non cancellare mai"; ovviamente con riferimento all'Autore "Sposta file da elenco Excel ( dodo).xlsm" Alla prossima. Buon fine settimana. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 97 | Registrato il: 24/07/2013
| Città: SALERNO | Età: 52 | Utente Junior | Excel LTSC 2021 | | OFFLINE | |
|
06/10/2018 18:16 | |
Houston, abbiamo (ho) un problema:
Andando ad applicare la macro su dati reali - più complessi di quelli che avevo indicato a scopo esemplificativo nel file di esempio - mi sono accorto che
il nome delle cartelle che si generano nelle Directories desiderate (Colonna M) deriva dai dati inseriti in Colonna K (Nuovo nome file) e non da quelli in colonna H (Nome Cliente)
Potreste indicarmi il criterio con cui modificare la macro al riguardo?
Anche perché nuove esigenze mi impongono di spostare il 'Nome Cliente in colonna E
Chiedo scusa ma da solo non ci arrivo
Grazie Windows 10 - Excel LTSC |
| | Post: 1.940 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
06/10/2018 18:26 | |
Ciao
cioè il file da creare è paperino2 e non paperino?
se è così basta che nell'istruzione:
Filename = Mid(mFile, 1, InStr(mFile, ".") - 2)
sostituisci 2 con 1
NON CONSIDERARE quanto sopra, ma
è bene che tu posti la nuova struttura ( dettagliando cosa vuoi) al fine di non lavorare a vuoto.
[Modificato da dodo47 06/10/2018 18:29] Domenico
Win 10 - Excel 2016 |
| | Post: 99 | Registrato il: 24/07/2013
| Città: SALERNO | Età: 52 | Utente Junior | Excel LTSC 2021 | | OFFLINE | |
|
06/10/2018 19:42 | |
Chiedo scusa, non sono riuscito a spiegarmi bene non per mancanza di volontà o rispetto, ma per assoluta assenza di mentalità informatica.
Non avevo chiaro il meccanismo in base al quale venivano nominate le cartelle di destinazione dei file.
Invio il file excel con i chiarimenti del caso indicati nel commento,
sperando che sia realizzabile ciò che chiedo.
Grazie per l'attenzione
Windows 10 - Excel LTSC |
| | Post: 3.139 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
07/10/2018 01:50 | |
Salve, Pierpaolo; leggo solo ora. Credo che il NomeFile abbia qualche criticità nella Data; voglio dire, Windows, normalmente, considera i caratteri che seguono il simbolo . (punto) come estensione del File. Cerco di spiegarmi, .xlsx definisce un tipo di File generato con Release di Excel 2007 o successive. Il simbolo "." è consentito nel NomeFile anche come simbolo intermedio ma, nel nostro caso, l'struzione: Filename = Mid(mfile, 1, InStr(mfile, ".") - 2) gestisce proprio il simbolo "." come discriminante per definire il NomeFile e questo crea problemi. Potresti pensare di modificare i NomeFile da: - Rossi Paolo_ordine del 05.10.2018_€ 15,00.xlsx - Verdi Antonio_ordine del 06.10.2018_€ 11,00.xlsx - Bianchi Mario_ordine del 06.10.2018_€ 9,00.xlsx a: - Rossi Paolo_ordine del 05-10-2018_€ 15,00.xlsx - Verdi Antonio_ordine del 06-10-2018_€ 11,00.xlsx - Bianchi Mario_ordine del 06-10-2018_€ 9,00.xlsx Nel caso questo sia conciliabile con le tue necessità, è possibile vedere le modifiche da apportare al Codice VBA di Domenico. A disposizione. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 1.941 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
07/10/2018 09:39 | |
Ciao
Visto che in col. E hai il nome cliente, l'istruzione:
Filename = Mid(mfile, 1, InStr(mfile, ".") - 2)
è superflua. Pertanto anche la col M non serve dato che è composta da L più E.
Pertanto (sempre non testato):
Sub Spostafile()
Dim r As Long, j As Long, FileDaSpostare As String, OldDir As String, NewDir As String
r = 6 'riga inizio dati
ur = Range("K" & Rows.Count).End(xlUp).Row
For j = r To ur
FileDaSpostare = Cells(j, 11)
OldDir = Cells(j, 12)
NewDir = Cells(j, 5)
If Dir(OldDir & NewDir, vbDirectory) = "" Then
MkDir OldDir & NewDir
End If
On Error Resume Next
Name OldDir & FileDaSpostare As OldDir & NewDir & "\" & FileDaSpostare
DoEvents
On Error GoTo 0
Next j
End Sub
Pierpaolo: ti suggerisco di apprendere qualcosa sulla programmazione altrimenti per un nonnulla sarai sempre a ricasco degli altri.
saluti
[Modificato da dodo47 07/10/2018 09:44] Domenico
Win 10 - Excel 2016 |
| | Post: 100 | Registrato il: 24/07/2013
| Città: SALERNO | Età: 52 | Utente Junior | Excel LTSC 2021 | | OFFLINE | |
|
07/10/2018 09:47 | |
Buon giorno a te, Giuseppe MN e a tutti gli utenti del Forum.
Non ho alcun problema a rinominare in un attimo tutti i file grazie a Bulk Rename Utility.
Allego il file aggiornato di conseguenza
In esso le righe sono tre
Preciso che in quello originale sono 100
Mi spiace aver fuorviato te e Dodo47 con l'indicazione di nomi file diversi da quelli effettivi
(era per semplificare il concetto e in base ad una mia errata convinzione che, per migliore immediatezza di lettura, ho espresso nel file allegato). Windows 10 - Excel LTSC |
| | Post: 101 | Registrato il: 24/07/2013
| Città: SALERNO | Età: 52 | Utente Junior | Excel LTSC 2021 | | OFFLINE | |
|
07/10/2018 09:51 | |
Buon giorno, Dodo 47
Ho appena letto la tua risposta
Provo subito la tua macro
Grazie mille
Windows 10 - Excel LTSC |
| | Post: 102 | Registrato il: 24/07/2013
| Città: SALERNO | Età: 52 | Utente Junior | Excel LTSC 2021 | | OFFLINE | |
|
07/10/2018 10:09 | |
Ciao Dodo47
Testato, testato...
Funziona perfettamente!
Grazie mille.
Un abbraccio
Windows 10 - Excel LTSC |
|
|