|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, devo modificare una parte del testo del nome di una serie di file contenuti in una cartella. La modifica riguarda un aggiornamento ai dati identificativi del file. C'è un modo per evitare la notevole perdita di tempo dell'operazione di rinomina di cascun file? Esempio: file1 deve diventare 18-file1 file2 deve diventare 18-file2 file3 deve diventare 18-file3 etc. file n deve diventare 18-file n
Il prefisso 18- è comune a tutti i file di quella famiglia, contenuta nella medesima cartella. Grazie assai e buona giornata, eZio
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve prova con questa: Sub RinominaFiles() Dim Miadir As String Dim Miofile As String Dim vecchio As String Dim Nuovo As String Miadir = "LA TUA DIRECTORY COMPLETA" Miofile = Dir(Miadir & "\*.xls") Do While Left(Miofile, 4) = "file" vecchio = Miadir & "\" & Miofile Nuovo = Miadir & "\" & "18-" & Miofile Name vecchio As Nuovo Miofile = Dir Loop End Sub Saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, mi spiace, ma la macro non funziona... la lancio (con indirizzo directory completo...), ma non succede assolutamente nulla... non esce neppure un messaggio di errore. Sicuramente sbaglio io... l'ho inserita nel file PERSONAL.xlsm Ho modificato l'istruzione in Miofile = Dir(Miadir & "\*.xlsm") perché in Excel 2007 i file con macro hanno quell'estensione
Do While Left(Miofile, 4) = "file" che significato ha il 4?... il numero di file contenuti nella cartella?
Grazie assai e buona giornata, eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve la macro cerca file con estensione Xls Miofile = Dir(Miadir & "\*.xls") se l'estensione dei tuoi file visto che hai 2007 dovrai cercare i file con estensione Xlsx - xlsm dipende da che tipo sono i tuoi file. Puoi mettere la macro in un normale file excel perchè usare il file Personal ? ..Left(Miofile, 4) = "file" significa: le prime 4 posizioni a sinistra del nome del file = "file" saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, spiacente, ma non funziona... non riesco a capire il motivo, dato che le coordinate sono esatte e complete, partendo da C:\ Mistero della fede... :)) Non capisco dove sbaglio... boh?? Grazie assai, eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve puoi eseguire la seguente macro sostituendo il percorso di Miadir: Crea l'elenco di tutti i file contenuti nella directory: Sub elencoFilesinDirectory() n = 1 Miadir = "Tua directory\" ' >>>da cambiaremiofile = Dir(Miadir & "\*.*") Do While miofile <> "" Cells(n, 1).Value = miofile miofile = Dir n = n + 1 Loop End Sub Inserisci la macro in un file vuoto di escel ed eseguila, mostra poi i risultati. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, quest'ultima macro funziona... nel foglio compare l'elenco dei files contenuti nella cartella... Non ho capito se devo copiarti l'elenco qui... o è una prova per vedere se le istruzioni vengono recepite correttamente... Grazie assai, eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
aetio ha scritto:Ciao, quest'ultima macro funziona... nel foglio compare l'elenco dei files contenuti nella cartella... Non ho capito se devo copiarti l'elenco qui... o è una prova per vedere se le istruzioni vengono recepite correttamente... Grazie assai, eZio salve volevo solo vedere una parte dell'elenco che veniva estratto. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, ecco il risultato, tutti i files sono nella stessa cartella: Cartel1.xlsm (è il file che contiene la macro) MAG.1_+_MAG.2.xlsm MAG.1_+_MAG.3.xlsm MAG.1_+_MAG.4.xlsm MAG.1_+_MAG.5.xlsm MAG.1_+_MAG.6.xlsm MAG.2_+_MAG.3.xlsm MAG.2_+_MAG.4.xlsm MAG.2_+_MAG.5.xlsm MAG.2_+_MAG.6.xlsm MAG.3_+_MAG.4.xlsm MAG.3_+_MAG.5.xlsm MAG.3_+_MAG.6.xlsm MAG.4_+_MAG.5.xlsm MAG.4_+_MAG.6.xlsm MAG.5_+_MAG.6.xlsm a questo elenco vorrei scrivere il prefisso di appartenenza di Settore... la ns. catalogazione interna è (una ad esempio) 72'43 per cui i files dovrebbero diventare 72'43-MAG.1_+_MAG.2.xlsm 72'43-MAG.1_+_MAG.3.xlsm 72'43-MAG.1_+_MAG.4.xlsm 72'43-MAG.1_+_MAG.5.xlsm 72'43-MAG.1_+_MAG.6.xlsm 72'43-MAG.2_+_MAG.3.xlsm 72'43-MAG.2_+_MAG.4.xlsm 72'43-MAG.2_+_MAG.5.xlsm 72'43-MAG.2_+_MAG.6.xlsm 72'43-MAG.3_+_MAG.4.xlsm 72'43-MAG.3_+_MAG.5.xlsm 72'43-MAG.3_+_MAG.6.xlsm 72'43-MAG.4_+_MAG.5.xlsm 72'43-MAG.4_+_MAG.6.xlsm 72'43-MAG.5_+_MAG.6.xlsm Grazie assai, eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
aetio ha scritto:Ciao, ecco il risultato, tutti i files sono nella stessa cartella: Cartel1.xlsm (è il file che contiene la macro) MAG.1_+_MAG.2.xlsm MAG.1_+_MAG.3.xlsm MAG.1_+_MAG.4.xlsm MAG.1_+_MAG.5.xlsm MAG.1_+_MAG.6.xlsm MAG.2_+_MAG.3.xlsm MAG.2_+_MAG.4.xlsm MAG.2_+_MAG.5.xlsm MAG.2_+_MAG.6.xlsm MAG.3_+_MAG.4.xlsm MAG.3_+_MAG.5.xlsm MAG.3_+_MAG.6.xlsm MAG.4_+_MAG.5.xlsm MAG.4_+_MAG.6.xlsm MAG.5_+_MAG.6.xlsm a questo elenco vorrei scrivere il prefisso di appartenenza di Settore... la ns. catalogazione interna è (una ad esempio) 72'43 per cui i files dovrebbero diventare 72'43-MAG.1_+_MAG.2.xlsm 72'43-MAG.1_+_MAG.3.xlsm 72'43-MAG.1_+_MAG.4.xlsm 72'43-MAG.1_+_MAG.5.xlsm 72'43-MAG.1_+_MAG.6.xlsm 72'43-MAG.2_+_MAG.3.xlsm 72'43-MAG.2_+_MAG.4.xlsm 72'43-MAG.2_+_MAG.5.xlsm 72'43-MAG.2_+_MAG.6.xlsm 72'43-MAG.3_+_MAG.4.xlsm 72'43-MAG.3_+_MAG.5.xlsm 72'43-MAG.3_+_MAG.6.xlsm 72'43-MAG.4_+_MAG.5.xlsm 72'43-MAG.4_+_MAG.6.xlsm 72'43-MAG.5_+_MAG.6.xlsm Grazie assai, eZio Salve ma perchè non fate mai un esempio pari pari alle vostre esigenze? prova a modificare come segue: Sub RinominaFiles() Dim Miadir As String Dim Miofile As String Dim vecchio As String Dim Nuovo As String Miadir = "LA TUA DIRECTORY COMPLETA" Miofile = Dir(Miadir & "\*.xlsm") Do While Left(Miofile, 3) = "MAG" vecchio = Miadir & "\" & Miofile Nuovo = Miadir & "\" & "72'43-" & Miofile Name vecchio As Nuovo Miofile = Dir Loop End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
a10n11 ha scritto:ma perchè non fate mai un esempio pari pari alle vostre esigenze? Vero.... ma in questo caso le casistiche sono parecchie... L'deale sarebbe di avere un Jolly che si limita a scrivere un prefisso a una serie di file che risiedono nella stessa cartella, indipendentemente dal loro nome originale... Perché spesso ho dei file dal nome diverso che alloggiano nella stessa cartella, ma che necessitano tutti dello stesso prefisso per poterli marchiare senza possibilità di confusione. Purtroppo l'ultima macro non funziona, nonostante il nomefile sia proprio quello... non riesco a capire perché non gira... dato che la directory è quella. Ed è strano che non restituisca nessun errore... Grazie assai, eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve mi mostri per intero il codice che fai girare? saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, certamente... ho dedicato (ovvio...) una cartella di prova
Sub RinominaFiles() Dim Miadir As String Dim Miofile As String Dim vecchio As String Dim Nuovo As String Miadir = "C:\Documents and Settings\User\Documenti\AAA\EZIOEXCEL1\Copia di ELABORAZIONI\Copia di Preparazione" Miofile = Dir(Miadir & "\*.xlsm") Do While Left(Miofile, 3) = "MAG" vecchio = Miadir & "\" & Miofile Nuovo = Miadir & "\" & "72'43-" & Miofile Name vecchio As Nuovo Miofile = Dir Loop End Sub
Grazie assai, eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve Non riesco a replicare il problema che riscontri. Prova con questa modifica: Sub RinominaFiles() Dim Miadir As String Dim Miofile As String Dim vecchio As String Dim Nuovo As String Dim coll As New Collection Miadir = "C:\Documents and Settings\User\Documenti\AAA\EZIOEXCEL1\Copia di ELABORAZIONI\Copia di Preparazione" Miofile = Dir(Miadir & "\*.xlsm") Do While Left(Miofile, 3) = "MAG" coll.Add Miofile Miofile = Dir Loop For n = 1 To coll.Count vecchio = Miadir & "\" & coll(n) Nuovo = Miadir & "\" & "72'43-" & coll(n) Name Miadir & "\" & coll(n) As Nuovo Next n End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, mi spiace molto, ti sto tribolando con questo chiodo fisso... non funziona ancora. Bonaccia completa. Nessun messaggio di errore, nessuna variazione nei nomi dei files... eppure la directory è quella, i files hanno quel nome, il file è regolarmente abilitato ad eseguire macro (che esegue regolarmente... ho testato anche quello). A te funziona? Se si, allora forse c'è qualche novità in seno alle versioni del programma. Se non sbaglio tu la fai girare in 2003, io in 2007. Ma il linguaggio è il medesimo... bo?!? questo è davvero un mistero della fede. Un errore, un'incongruenza, se ci fossero, dovrebbe restituirli comunque, mentre qui non succede assolutamente nulla.... Grazie infinite per la tua illimitata pazienza, buona giornata eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
aetio ha scritto:Ciao, mi spiace molto, ti sto tribolando con questo chiodo fisso... non funziona ancora. Bonaccia completa. Nessun messaggio di errore, nessuna variazione nei nomi dei files... eppure la directory è quella, i files hanno quel nome, il file è regolarmente abilitato ad eseguire macro (che esegue regolarmente... ho testato anche quello). A te funziona? Se si, allora forse c'è qualche novità in seno alle versioni del programma. Se non sbaglio tu la fai girare in 2003, io in 2007. Ma il linguaggio è il medesimo... bo?!? questo è davvero un mistero della fede. Un errore, un'incongruenza, se ci fossero, dovrebbe restituirli comunque, mentre qui non succede assolutamente nulla.... Grazie infinite per la tua illimitata pazienza, buona giornata eZio salve Se non ti restituisce nessun errore significa che non trova nessun file da elaborare. A questo punto mi fa pensare che il file non cominci con "MAG" a questo punto fai girare di nuovo questa macro in una cartella vuota una volta che ti ha creato l'elenco dei file nella cella B1 scrivi questa formula =Sinistra(A1;3) fammi sapere il risultato. Sub elencoFilesinDirectory() n = 1 Miadir = "C:\Documents and Settings\User\Documenti\AAA\EZIOEXCEL1\Copia di ELABORAZIONI\Copia di Preparazione" miofile = Dir(Miadir & "\*.*") Do While miofile <> "" Cells(n, 1).Value = miofile miofile = Dir n = n + 1 Loop End Sub Se la cartella contiene solo i file da modificare, possiamo togliere il controllo dell'iniziale del nome file e processarli tutti modificando così la macro: Sub RinominaFiles() Dim Miadir As String Dim Miofile As String Dim vecchio As String Dim Nuovo As String Dim coll As New Collection Miadir = "C:\Documents and Settings\User\Documenti\AAA\EZIOEXCEL1\Copia di ELABORAZIONI\Copia di Preparazione" Miofile = Dir(Miadir & "\*.xlsm") Do While Miofile <> "" coll.Add Miofile Miofile = Dir Loop For n = 1 To coll.Count vecchio = Miadir & "\" & coll(n) Nuovo = Miadir & "\" & "72'43-" & coll(n) Name Miadir & "\" & coll(n) As Nuovo Next n End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
a10n11 ha scritto:
Se la cartella contiene solo i file da modificare, possiamo togliere il controllo dell'iniziale del nome file e processarli tutti modificando così la macro etc.
Queste tue parole mi hanno dato la soluzione: per esigenze di "accorpamento" delle operazioni attinenti (altrimenti il tutto diventerebbe ingestibile: l'ambiente in cui gira tutto il mio ambaradan è veramente un universo ahahahah...) avevo inserito la macro in un file che risiede nella stessa cartella dei files da modificare, pagina che funge anche da legenda, check list etc. Ho estratto quel file dalla cartella e la macro ha girato da dio (non esageriamo... è un modo di dire...ahahah) Sei davvero il N.1Grazie assai e buon pomeriggio... mi hai fatto davvero felice: non hai idea del tempo che si perde nel dovere modificare manualmente i file (non ci sono alternative... bisogna modificarli dopo averli processati, altrimenti sarebbero dolori!!) eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve in pratica la prima versione prevedeva che il file della macro fosse contenuto nella stessa directory dei file da modificare. Ho scoperto l'errore (una banale svista che faceva uscire dal loop quando la condizione dell'iniziale del nome file diventava falsa). questa è la correzione: Sub RinominaFiles() Dim Miadir As String Dim Miofile As String Dim vecchio As String Dim Nuovo As String Dim coll As New Collection Miadir = "C:\Documents and Settings\User\Documenti\AAA\EZIOEXCEL1\Copia di ELABORAZIONI\Copia di Preparazione" Miofile = Dir(Miadir & "\*.xls") Do While Left(Miofile, 3) <> "" If Left(Miofile, 3) = "MAG" Then coll.Add Miofile End If Miofile = Dir Loop For n = 1 To coll.Count vecchio = Miadir & "\" & coll(n) Nuovo = Miadir & "\" & "72'43-" & coll(n) Name Miadir & "\" & coll(n) As Nuovo Next n End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, Grazie infinite!! Siano Benedetti in eterno i Creatori di macro..... :))))))))) eZio
|
|
Guest |