Copia foglio VBA / Copia foglio in un'altra cartella di lavoro

Questo tutorial illustrerà come copiare un foglio o un foglio di lavoro utilizzando VBA.

Copia il foglio di lavoro in una nuova cartella di lavoro

Per copiare un foglio di lavoro in una nuova cartella di lavoro:

1 Fogli("Foglio1").Copia

Copia ActiveSheet in una nuova cartella di lavoro

Per copiare ActiveSheet in una nuova cartella di lavoro:

1 ActiveSheet.Copia

Copia più fogli in una nuova cartella di lavoro

Per copiare più fogli in una nuova cartella di lavoro:

1 ActiveWindow.SelectedSheets.Copy

Copia foglio all'interno della stessa cartella di lavoro

Abbiamo iniziato mostrandoti l'esempio di fogli di copia più semplice: copiare i fogli in una nuova cartella di lavoro. Questi esempi di seguito ti mostreranno come copiare un foglio all'interno della stessa cartella di lavoro. Quando si copia un foglio all'interno di un Workbook, è necessario specificare una posizione. Per specificare una posizione, dirai a VBA di spostare il foglio di lavoro PRIMA o DOPO un altro foglio di lavoro.

Copia foglio prima di un altro foglio

Qui specificheremo di copiare e incollare il foglio prima di Sheet2

1 Fogli("Foglio1"). Copia prima:=Fogli("Foglio2")

Copia foglio prima del primo foglio

Invece di specificare il nome del foglio, puoi anche specificare la posizione del foglio. Qui stiamo copiando e incollando un foglio prima del primo foglio nella cartella di lavoro.

1 Fogli("Foglio1"). Copia prima:=Fogli(1)

Il foglio appena creato sarà ora il primo foglio nella cartella di lavoro.

Copia foglio dopo l'ultimo foglio

Usa la proprietà After per dire a VBA di incollare il foglio DOPO un altro foglio. Qui copieremo e incolleremo un foglio dopo l'ultimo foglio nella cartella di lavoro:

1 Fogli("Foglio1"). Copia dopo:=Fogli(Fogli.Count)

Nota che abbiamo usato Sheets.Count per contare il numero di fogli nella cartella di lavoro.

Sposta foglio

Puoi anche spostare un foglio all'interno di una cartella di lavoro utilizzando una sintassi simile. Questo codice sposterà Sheet1 alla fine della cartella di lavoro:

1 Fogli("Foglio1").Sposta dopo:=Fogli(Fogli.Conteggio)

Foglio di copia e nome

Dopo aver copiato e incollato un foglio, il foglio appena creato diventa ActiveSheet. Quindi, per rinominare il nostro nuovo foglio, usa semplicemente ActiveSheet.Name:

123456 Sub CopySheetRename1()Fogli("Foglio1"). Copia dopo:=Fogli(Fogli.Count)ActiveSheet.Name = "LastSheet"Fine sottotitolo

Se il nome del foglio esiste già, il codice sopra genererà un errore. Invece possiamo usare "On Error Resume Next" per dire a VBA di ignorare la denominazione del foglio e procedere con il resto della procedura:

12345678 Sub CopySheetRename2()Fogli("Foglio1"). Copia dopo:=Fogli(Fogli.Count)In caso di errore Riprendi AvantiActiveSheet.Name = "LastSheet"In caso di errore Vai a 0Fine sottotitolo

Oppure usa la nostra funzione RangeExists per verificare se il nome del foglio esiste già prima di tentare di copiare il foglio:

123456789101112131415161718 Sub CopySheetRename3()If RangeExists("LastSheet") ThenMsgBox "Il foglio esiste già."AltroFogli("Foglio1"). Copia dopo:=Fogli(Fogli.Count)ActiveSheet.Name = "LastSheet"Finisci seFine sottotitoloFunzione RangeExists(WhatSheet As String, Optional ByVal WhatRange As String = "A1") As BooleanDim test come intervalloIn caso di errore Riprendi AvantiImposta test = ActiveWorkbook.Sheets(WhatSheet).Range(WhatRange)RangeExists = Err.Number = 0In caso di errore Vai a 0Fine funzione

Copia e nome foglio in base al valore della cella

Potresti anche voler copiare e nominare un foglio in base a un valore di cella. Questo codice chiamerà il foglio di lavoro in base al valore della cella in A1

12345678 Sub CopySheetRenameFromCell()Fogli("Foglio1"). Copia dopo:=Fogli(Fogli.Count)In caso di errore Riprendi AvantiActiveSheet.Name = Range("A1").ValueIn caso di errore Vai a 0Fine sottotitolo

Copia il foglio di lavoro in un'altra cartella di lavoro

Finora abbiamo lavorato con la copia di Fogli all'interno di una cartella di lavoro. Ora tratteremo esempi per copiare e incollare fogli in altre cartelle di lavoro. Questo codice copierà un foglio all'inizio di un'altra cartella di lavoro:

1 Fogli("Foglio1").Copia prima:=Cartelle("Esempio.xlsm").Fogli(1)

Questo copierà un foglio di lavoro alla fine di un'altra cartella di lavoro.

1 Fogli("Foglio1").Copia dopo:=Cartelle di lavoro("Esempio.xlsm").Fogli(Cartelle di lavoro("Esempio.xlsm").Fogli.Conteggio)

Avviso che abbiamo sostituito 1 insieme a Cartelle di lavoro(“Esempio.xlsm”).Fogli.Conteggio per ottenere l'ultimo foglio di lavoro.

Copia il foglio di lavoro in una cartella di lavoro chiusa

Potresti anche voler copiare un foglio di lavoro in una cartella di lavoro chiusa. Questo codice aprirà una cartella di lavoro chiusa in modo che tu possa copiarvi un foglio.

123456789 Sub CopySheetToClosedWB()Application.ScreenUpdating = FalseImposta closedBook = Workbooks.Open("D:\Dropbox\excel\articles\example.xlsm")Fogli("Foglio1").Copia Prima:=Libro chiuso.Fogli(1)closedBook.Close SaveChanges:=TrueApplication.ScreenUpdating = TrueFine sottotitolo

Copia il foglio da un'altra cartella di lavoro senza aprirlo

Al contrario, questo codice copierà un foglio di lavoro DA una cartella di lavoro chiusa senza che tu debba aprire manualmente la cartella di lavoro.

123456789 Sub CopySheetFromClosedWB()Application.ScreenUpdating = FalseImposta closedBook = Workbooks.Open("D:\Dropbox\excel\articles\example.xlsm")closedBook.Sheets("Sheet1").Copy Before:=ThisWorkbook.Sheets(1)closedBook.Close SaveChanges:=FalseApplication.ScreenUpdating = TrueFine sottotitolo

Nota che in entrambi questi esempi abbiamo disabilitato ScreenUpdating in modo che il processo venga eseguito in background.

Duplica foglio Excel più volte

Puoi anche duplicare un foglio Excel più volte utilizzando un ciclo.

1234567891011121314 Sub CopySheetMultipleTimes()Dim n As IntegerDim i As IntegerIn caso di errore Riprendi Avantin = InputBox("Quante copie vuoi fare?")Se n > 0 AlloraPer i = 1 a nActiveSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count)ProssimoFinisci seFine sottotitolo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave