Como copiar e mover uma planilha usando vba?

Você pode copiar e mover uma planilha no Excel usando código VBA, e neste tutorial aprenderemos diferentes maneiras de fazer isso.

Copiar uma planilha na mesma pasta de trabalho

Se quiser copiar uma planilha na mesma pasta de trabalho, você pode usar o código a seguir onde usou o método de cópia.

 Sheets("Sheet5").Copy Before:=Sheets(1)

Neste código, planilha1 é a primeira planilha da pasta de trabalho e, quando você executa esse código, ele copia a planilha com o nome “Planilha5” antes da primeira planilha da pasta de trabalho.

copie uma folha no mesmo fichário

E se quiser copiá-lo depois da primeira planilha, o código seria o seguinte.

 Sheets("Sheet5").Copy After:=Sheets(1)

E se quiser copiá-lo depois da primeira planilha, o código seria o seguinte.

 Sheets("Sheet5").Copy Before:=Sheets("Sheet3") Sheets("Sheet5").Copy After:=Sheets("Sheet3")

Quando você executa este código VBA, ele copia a “Planilha5” antes e depois da “Planilha3”.

código vba se você quiser copiá-lo após a primeira planilha

Com a linha de código a seguir, você pode copiar uma planilha após a última planilha da pasta de trabalho. Ele usa sheet.count para obter o número de folhas e, em seguida, usa a contagem para copiar a última folha.

 Sheets("myNewSheet").Move After:=Sheets(Sheets.Count)
copie uma folha após a última folha do fichário

Links úteis: Executar uma macroGravador de macroEditor Visual BasicManual pessoal de macros

Copie uma planilha na mesma pasta de trabalho com um novo nome

E se você quiser copiar uma planilha e renomeá-la instantaneamente, você precisa usar a propriedade name, assim como o código a seguir.

 Sheets("Sheet5").Move Before:=Sheets(1) ActiveSheet.Name = "myNewSheet"
copie uma planilha para a mesma pasta de trabalho com o novo nome

Mover uma planilha na mesma pasta de trabalho

Para mover uma planilha na mesma pasta de trabalho, você precisa usar o método move conforme mostrado no código a seguir.

 Sheets("Sheet5").Move After:=Sheets(1)
mover uma folha no mesmo fichário

Este código moverá “Planilha5” antes de “Planilha2”, como você pode ver no instantâneo acima.

Copiar uma planilha para a nova pasta de trabalho

Quando você usa o método copy sem definir uma planilha na pasta de trabalho atual, o VBA abre uma nova pasta de trabalho e copia essa planilha para essa pasta de trabalho.

 Sheets("Sheet5").Copy

E para mover uma planilha para uma nova pasta de trabalho.

 Sheets("Sheet5").Move

Copie várias planilhas para a nova pasta de trabalho

Se você quiser adicionar várias planilhas à nova pasta de trabalho de uma vez, use um código como este.

 Sheets(Array("Sheet2", "Sheet3", "Sheet4", "Sheet5")).Copy

O código acima cria uma matriz de planilhas e depois copia todas elas em uma nova pasta de trabalho.

Copiar uma planilha para outra pasta de trabalho

Se quiser copiar uma planilha para outra pasta de trabalho que já esteja aberta, você pode mencionar o nome da pasta de trabalho antes ou depois do argumento.

 Sheets("Sheet1").Copy Before:=Workbooks("Book1.xlsx").Sheets(1)

O código acima copia a Planilha1 da pasta de trabalho ativa e a adiciona antes da primeira planilha da Planilha1.xlsx que já está aberta.

E se você quiser movê-lo.

 Sheets("Sheet1").Move Before:=Workbooks("Book1.xlsx").Sheets(1)

Copiar uma planilha para uma pasta de trabalho fechada

Existe uma maneira de copiar uma planilha para uma pasta de trabalho fechada e você não precisa abri-la. Veja o código abaixo.

 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

Neste código, você tem a variável myBook e uma pasta de trabalho atribuída a ela. Desativamos a atualização da tela para que o código possa realizar a tarefa no backend.

Copie uma planilha de outra pasta de trabalho sem abri-la

Da mesma forma, você pode copiar e mover uma planilha de uma pasta de trabalho fechada. Veja o código abaixo.

 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

Adicione um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *