Come copiare e spostare un foglio utilizzando vba?
Puoi copiare e spostare un foglio in Excel utilizzando il codice VBA e in questo tutorial impareremo diversi modi per farlo.
Copia un foglio nella stessa cartella di lavoro
Se desideri copiare un foglio nella stessa cartella di lavoro, puoi utilizzare il seguente codice in cui hai utilizzato il metodo di copia.
Sheets("Sheet5").Copy Before:=Sheets(1)
In questo codice, foglio1 è il primo foglio della cartella di lavoro e quando si esegue questo codice, copia il foglio con nome “Foglio5” prima del primo foglio della cartella di lavoro.
E se vuoi copiarlo dopo il primo foglio, il codice sarebbe il seguente.
Sheets("Sheet5").Copy After:=Sheets(1)
E se vuoi copiarlo dopo il primo foglio, il codice sarebbe il seguente.
Sheets("Sheet5").Copy Before:=Sheets("Sheet3") Sheets("Sheet5").Copy After:=Sheets("Sheet3")
Quando esegui questo codice VBA, copia il “Foglio5” prima e dopo il “Foglio3”.
Con la seguente riga di codice è possibile copiare un foglio dopo l’ultimo foglio della cartella di lavoro. Utilizza sheet.count per ottenere il numero di fogli, quindi utilizza il conteggio per copiare il foglio per ultimo.
Sheets("myNewSheet").Move After:=Sheets(Sheets.Count)
Link utili: Esegui una macro – Registratore di macro – Visual Basic Editor – Manuale delle macro personali
Copia un foglio nella stessa cartella di lavoro con un nuovo nome
E se vuoi copiare un foglio e poi rinominarlo immediatamente, devi utilizzare la proprietà name, proprio come nel codice seguente.
Sheets("Sheet5").Move Before:=Sheets(1) ActiveSheet.Name = "myNewSheet"
Sposta un foglio nella stessa cartella di lavoro
Per spostare un foglio nella stessa cartella di lavoro, è necessario utilizzare il metodo di spostamento come nel codice seguente.
Sheets("Sheet5").Move After:=Sheets(1)
Questo codice sposterà “Foglio5” prima di “Foglio2” come puoi vedere nell’istantanea sopra.
Copia un foglio nella nuova cartella di lavoro
Quando si utilizza il metodo di copia senza definire un foglio nella cartella di lavoro corrente, VBA apre una nuova cartella di lavoro e copia quel foglio in quella cartella di lavoro.
Sheets("Sheet5").Copy
E per spostare un foglio in una nuova cartella di lavoro.
Sheets("Sheet5").Move
Copia più fogli nella nuova cartella di lavoro
Se desideri aggiungere più fogli alla nuova cartella di lavoro contemporaneamente, utilizza un codice come questo.
Sheets(Array("Sheet2", "Sheet3", "Sheet4", "Sheet5")).Copy
Il codice precedente crea una serie di fogli e quindi li copia tutti in una nuova cartella di lavoro.
Copia un foglio in un’altra cartella di lavoro
Se desideri copiare un foglio in un’altra cartella di lavoro già aperta, puoi menzionare il nome della cartella di lavoro dopo o prima dell’argomento.
Sheets("Sheet1").Copy Before:=Workbooks("Book1.xlsx").Sheets(1)
Il codice sopra copia il Foglio1 dalla cartella di lavoro attiva e lo aggiunge prima del primo foglio di Book1.xlsx che è già aperto.
E se vuoi spostalo.
Sheets("Sheet1").Move Before:=Workbooks("Book1.xlsx").Sheets(1)
Copia un foglio in una cartella di lavoro chiusa
C’è un modo per copiare un foglio in una cartella di lavoro chiusa e non è necessario aprirla. Guarda il codice qui sotto.
Sub vba_copy_sheet() Dim mybook As Workbook Application.ScreenUpdating = False Set mybook = _ Workbooks.Open _ ("C:UsersDellDesktopsamplefile.xlsx") Workbooks("Book1.xlsx").Sheets("Sheet2").Copy Before:=mybook.Sheets(1) mybook.Close SaveChanges:=True Application.ScreenUpdating = True End Sub
In questo codice hai la variabile myBook e quindi una cartella di lavoro ad essa assegnata. Abbiamo disabilitato l’aggiornamento dello schermo in modo che il codice possa eseguire l’attività nel backend.
Copia un foglio da un’altra cartella di lavoro senza aprirlo
Allo stesso modo, puoi copiare e spostare un foglio da una cartella di lavoro chiusa. Guarda il codice qui sotto.
Sub vba_copy_sheet() Dim mybook As Workbook Application.ScreenUpdating = False Set mybook = _ Workbooks.Open _ ("C:UsersDellDesktopsamplefile.xlsx") mybook.Sheets("mySheet").Copy Before:=Workbooks("Book1.xlsx").Sheets(1) mybook.Close SaveChanges:=True Application.ScreenUpdating = True End Sub