VBA Copiar Planilha

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on April 28, 2023

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

 

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA