Questa esercitazione dimostrerà come utilizzare il metodo MoveFile di FileSystemObject.
Sposta i file con VBA FileSystemObject
Il metodo MoveFile sposta uno o più file da una posizione a un'altra.
Imposta riferimento VBA
Innanzitutto, quando si utilizza FileSystemObjects, potrebbe essere necessario impostare un riferimento alla libreria runtime di script VB: aprire l'editor di Visual Basic (ALT+F11), selezionare Strumenti > Riferimenti dal menu a discesa e spuntare la casella di 'Runtime di script Microsoft'.
FileSystemOggetto
In secondo luogo, è necessario creare il FileSystemObject:
12 | Dim FSO come nuovo oggetto FileSystemImposta FSO = CreateObject("Scripting.FileSystemObject") |
Ora hai accesso a MoveFile e agli altri metodi FileSystemObject.
Programmazione VBA | Il generatore di codice funziona per te!
Sposta un file
Per spostare un singolo file, puoi utilizzare la semplice sintassi di FSO.MoveFile( source, destination ).
1 | FSO.MoveFile "C:\Src\TestFile.txt", "C:\Dst\ModTestFile.txt" |
Come accennato in precedenza, per prima cosa devi creare il FileSystemObject:
1234567 | Sub FSOMoveFile()Dim FSO come nuovo oggetto FileSystemImposta FSO = CreateObject("Scripting.FileSystemObject")FSO.MoveFile "C:\Src\TestFile.txt", "C:\Dst\ModTestFile.txt"Fine sottotitolo |
Sposta più file
Puoi spostare più file con parti dello stesso nome:
1 | FSO.MoveFile "C:\Src\TestFile*.txt", "C:\Dst\" |
Oppure puoi spostare più file con la stessa estensione:
1 | FSO.MoveFile "C:\Src\ *.xlsx", "C:\Dst\" |
O semplicemente tutti i file da una cartella:
1 | FSO.MoveFile "C:\Src\*", "C:\Dst\" |
Nota, qui utilizziamo il carattere jolly *.
Invece di utilizzare il carattere jolly *, puoi spostare tutti i file in una cartella utilizzando un ciclo For Each.
12345678910111213141516 | Sub FSOMoveAllFiles ()Dim FSO come nuovo oggetto FileSystemDim FromPath As StringDim ToPath As StringDim FileInFromFolder come oggettoFromPath = "C:\Src\"ToPath = "C:\Dst\"Imposta FSO = CreateObject("Scripting.FileSystemObject")Per ogni FileInFromFolder in FSO.GetFolder(FromPath).FilesFileInFromFolder.Move ToPathFile successivo da cartellaFine sottotitolo |
Sposta il file in una nuova cartella
Puoi anche spostare i file in una cartella appena creata. Per farlo, aggiungi il comando
1 | MkDir "C:\Dst\" |
prima di dichiarare il percorso di destinazione.
1234567891011121314151617 | Sub FSOMoveAllFiles ()Dim FSO come nuovo oggetto FileSystemDim FromPath As StringDim ToPath As StringDim FileInFromFolder come oggettoFromPath = "C:\Src\"MkDir "C:\Dst\"ToPath = "C:\Dst\"Imposta FSO = CreateObject("Scripting.FileSystemObject")Per ogni FileInFromFolder in FSO.GetFolder(FromPath).FilesFileInFromFolder.Move ToPathFile successivo da cartellaFine sottotitolo |
Stanco di cercare esempi di codice VBA? Prova AutoMacro!
Sposta cartelle
È possibile utilizzare il metodo analogico MoveFolder per spostare le cartelle.
1234567 | Sub FSOMoveFolder()Dim FSO come nuovo oggetto FileSystemImposta FSO = CreateObject("Scripting.FileSystemObject")FSO.MoveFolder "C:\OldFolder", "C:\Dst\NewFolder"Fine sottotitolo |