La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Salve a tutti!
Sto cercando di creare una macro che sposti una serie di file (doc oppure xls) che sono nominati in un certo modo (un codice, per intenderci) in una serie cartelle (sono più di 400) che abbiano lo stesso nome del file. Ogni cartella deve contenere SOLO il file che intendo spostare.
Ho creato, nei giorni precedenti, una macro in grado di copiare un file da una cartella ad un'altra ma chiaramente non basta per raggiungere il mio obiettivo.
Nel file di esempio allego il codice che ho utilizzato.
Dal momento che è mia intenzione imparare il più possibile, vorrei sapere che metodi posso utilizzare per arrivare al risultato. Purtroppo, anche cercando in giro, non ho trovato risposte alla mia domanda.
Ringrazio in anticipo chiunque potrà darmi una mano su questo forum!
Ciao e buon Ferragosto
Hai dimenticato di allegare il file ?
Ciao,
Mario
Ciao e buon ferragosto anche a te!
Scusa, ero convintissima di averlo allegato, ma non è stato così!
Ne approfitto per spiegare la mia idea di base: creare un ciclo for each con condizione tipo "if nomefile=nome cartella then copy file". Il punto è: come dichiarare queste due variabili?
Non ho sviluppato la soluzione diretta ma:
1) per spostare il file nella cartella corrispondente al nome del file stesso devi conoscere il nome del file in esame
2) quindi la routine dovrebbe leggere sistematicamente (For Each ...Next) i nomi di tutti i file presenti nella cartella Cartella1 *
3) costruire un elenco temporaneo dei nomi dei file (in Collection o in Array/matrice, io farei così**)
4) a questo punto leggere l'elenco e creare la nuova cartella con stesso nome del file (nome cartella = nome file. La cartella non dovrebbe esistere essendo collegata al nome del file
5) ora copiare il file in esame da Cartel1 alla nuova cartella
6) cancellare il file dalla cartella originale (o da fare manualmente dopo aver controllato l'esito della routine)
7) cancellare elenco nomi file e fine routine(**).
_________________________________________________
* Questa è una routine che avevo sviluppato anni fa:
Sub FileInFolder()
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Users\alida\Desktop\Cartella1\")
Dim F As Integer
Dim TempArr()
For Each objFile In objFolder.Files
F = F + 1
TempArr(F) = objFile.Name & "\"
Next objFile
End Sub
_________________________________________________
** si può anche evitare: lettura nome file, costruzione cartella, spostamento file. Non ho provato...
_________________________________________________
I metodi di FSO:
FileExists - Verifica se il file specificato esiste
CreateTextFile - Utilizzare per creare un nuovo file di testo vuoto
OpenTextFile - Viene usato per accedere ad un file gia' esistente
DeleteFile - Utilizzare per cancellare un file sul disco
FolderExists - Verifica se la directory/cartella specificata esiste
CreateFolder - Utilizzare per creare una nuova directory/cartella su disco
DeleteFolder - Cancella una directory esistente dal disco
GetFolder Rende 'attiva' la directory specificata
GetFile - Rende 'attivo' il file specificato
CopyFile - Crea una copia del file indicato
GetAbsolutePath - Ritorna il percorso 'assoluto' (C:\percorso\...)
GetTempName - Costruisce il nome di un file 'temporaneo'
Sarebbe interessante sapere se e come è stato risolto. E nel caso segnalare il post come "risolto". Grazie.