VBA Copiar Planilha
In this Article
- Copiar Planilha para Novo Arquivo
- Copiar Múltiplas Planilhas Para um novo Arquivo
- Copiar Planilha Dentro do Mesmo Arquivo
- Mover Planilha
- Copiar e Renomear Planilha
- Copiar Planilha Para um Outro Arquivo
- Copiar Planilha Para um Arquivo Fechado
- Copia Planilha de um Arquivo Sem Abri-lo
- Duplicar Planilha do Excel Várias Vezes
Este tutorial abordará como copiar uma Planilha ou Planilha de Trabalho usando VBA.
Copiar Planilha para Novo Arquivo
Para copiar uma planilha para um novo arquivo de trabalho:
Sheets("Planilha1").Copy
Copiar ActiveSheet Para um Novo Arquivo
Para copiar o ActiveSheet para um novo Arquivo:
ActiveSheet.Copy
Copiar Múltiplas Planilhas Para um novo Arquivo
Para copiar várias planilhas para um novo arquivo:
ActiveWindow.SelectedSheets.Copy
Copiar Planilha Dentro do Mesmo Arquivo
Começamos mostrando-lhe o exemplo mais simples de copiar planilhas: cópia de planilha(s) para um novo arquivo. Estes exemplos abaixo lhe mostrarão como copiar uma planilha dentro do mesmo arquivo. Ao copiar uma Planilha dentro de um Arquivo, você deve especificar um local. Para especificar um local, você dirá ao VBA para mover a Planilha para ANTES ou DEPOIS de outra planilha.
Copiar Planilha Antes de Outra Planilha
Aqui especificaremos para copiar e colar a Planilha1 antes da Planilha2
Sheets("Planilha1").Copy Before:=Sheets("Planilha2")
Copiar Planilha Antes da Primeira Planilha
Em vez de especificar o nome da Planilha, você também pode especificar a posição da Planilha. Aqui estamos copiando e colando uma Planilha antes da primeira Planilha do Arquivo.
Sheets("Planilha1").Copy Before:=Sheets(1)
A Planilha recém-criada será agora a primeira Planilha do arquivo.
Copiar Planilha Depois da Última Planilha
Use a propriedade After para dizer ao VBA para colar a Planilha APÓS outra planilha. Aqui copiaremos e colaremos uma Planilha após a última planilha do arquivo:
Sheets("Planilha1").Copy After:=Sheets(Sheets.Count)
Note que usamos Sheets.Count para contar o número de planilhas do arquivo.
Mover Planilha
Você também pode mover uma Planilha dentro de um arquivo usando uma sintaxe similar. Este código irá mover a Planilha1 para o final do arquivo:
Sheets("Planilha1").Move After:=Sheets(Sheets.Count)
Copiar e Renomear Planilha
Depois de copiar e colar uma planilha, a planilha recém-criada se torna a ActiveSheet. Portanto, para renomear nossa nova planilha, basta usar o ActiveSheet.Name:
Sub CopiarPlanilhaRenomear1()
Sheets("Planilha1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "UltimaPlanilha"
End Sub
Se o nome da planilha já existir, o código acima gerará um erro. Em vez disso, podemos usar “On Error Resume Next” para dizer ao VBA que ignore o nome da Planilha e prossiga com o resto do procedimento:
Sub CopiarPlanilhaRenomear2()
Sheets("Planilha1").Copy After:=Sheets(Sheets.Count)
On Error Resume Next
ActiveSheet.Name = "UltimaPlanilha"
On Error GoTo 0
End Sub
Ou use nossa função ExisteIntervalo para testar se o nome da planilha já existe antes de tentar copiar a planilha:
Sub CopiarPlanilhaRenomear3()
If ExisteIntervalo("UltimaPlanilha") Then
MsgBox "A Planilha já existe."
Else
Sheets("Planilha1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "UltimaPlanilha"
End If
End Sub
Function ExisteIntervalo(QualPlanilha As String, Optional ByVal QualIntervalo As String = "A1") As Boolean
Dim teste As Range
On Error Resume Next
Set teste = ActiveWorkbook.Sheets(QualPlanilha).Range(QualIntervalo)
ExisteIntervalo = Err.Number = 0
On Error GoTo 0
End Function
Copiar e Renomear Planilha com Base no Valor da Célula
Você também pode querer copiar e nomear uma Planilha com base em um Valor de uma Célula. Este código nomeará a Planilha com base no valor da Célula em A1
Sub CopiarPlanilhaRenomearPelaCelula()
Sheets("Planilha1").Copy After:=Sheets(Sheets.Count)
On Error Resume Next
ActiveSheet.Name = Range("A1").Value
On Error GoTo 0
End Sub
Copiar Planilha Para um Outro Arquivo
Até agora, trabalhamos com a cópia de planilhas dentro de um arquivo. Agora vamos cobrir exemplos de copiar e colar planilhas em outros arquivos. Este código irá copiar uma planilha para o início de outro arquivo:
Sheets("Planilha1").Copy Before:=Workbooks("Examplo.xlsm").Sheets(1)
Isto copiará uma planilha para o final de outro arquivo.
Sheets("Planilha1").Copy After:=Workbooks("Examplo.xlsm").Sheets(Workbooks("Examplo.xlsm").Sheets.Count)
Perceba que substituímos 1 por Workbooks(“Examplo.xlsm”).Sheets.Count para obter a última Worksheet.
Copiar Planilha Para um Arquivo Fechado
Você também pode querer copiar uma planilha para um arquivo que está fechado. Este código abrirá um arquivo fechado para que você possa copiar uma planilha para dentro dele.
Sub CopiaPlanilhaParaArquivoFechado()
Application.ScreenUpdating = False
Set ArquivoFechado = Workbooks.Open("D:DropboxExcelArtigoExamplo.xlsm")
Sheets("Planilha1").Copy Before:=ArquivoFechado.Sheets(1)
ArquivoFechado.Close SaveChanges:=True
Application.ScreenUpdating = True
End Sub
Copia Planilha de um Arquivo Sem Abri-lo
Por outro lado, este código copiará uma planilha de um arquivo fechado sem que você precise abrir manualmente o arquivo.
Sub CopiarPlanilhaDeArquivoFechado()
Application.ScreenUpdating = False
Set ArquivoFechado = Workbooks.Open("D:DropboxExcelArtigoExamplo.xlsm")
ArquivoFechado.Sheets("Planilha1").Copy Before:=ThisWorkbook.Sheets(1)
ArquivoFechado.Close SaveChanges:=False
Application.ScreenUpdating = True
End Sub
Observe que nestes dois exemplos desativamos a ScreenUpdating (atualização de tela) para que o processo seja executado em segundo plano.
Duplicar Planilha do Excel Várias Vezes
Você também pode duplicar uma planilha do Excel várias vezes usando um Loop.
Sub CopiarPlanilhaMultiplasVezes()
Dim n As Integer
Dim i As Integer
On Error Resume Next
n = InputBox("Quantas cópias deseja fazer?")
If n > 0 Then
For i = 1 To n
ActiveSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count)
Next
End If
End Sub