Folha de cópia de VBA / folha de cópia para outra pasta de trabalho

Este tutorial cobrirá como copiar uma planilha ou planilha usando o VBA.

Copiar planilha para nova pasta de trabalho

Para copiar uma planilha para uma nova pasta de trabalho:

1 Folhas ("Folha1"). Copiar

Copiar ActiveSheet para uma nova pasta de trabalho

Para copiar a ActiveSheet para uma nova pasta de trabalho:

1 ActiveSheet.Copy

Copiar várias folhas para uma nova pasta de trabalho

Para copiar várias planilhas para uma nova pasta de trabalho:

1 ActiveWindow.SelectedSheets.Copy

Copiar folha dentro da mesma pasta de trabalho

Começamos mostrando a você o exemplo de planilhas de cópia mais simples: copiar planilhas para uma nova pasta de trabalho. Os exemplos abaixo mostrarão como copiar uma planilha na mesma pasta de trabalho. Ao copiar uma folha dentro de um worbook, você deve especificar um local. Para especificar um local, você dirá ao VBA para mover a planilha ANTES ou DEPOIS de outra planilha.

Copiar folha antes de outra folha

Aqui iremos especificar para copiar e colar a Folha antes da Folha2

1 Folhas ("Folha1"). Copiar antes: = Folhas ("Folha2")

Copiar Folha Antes da Primeira Folha

Em vez de especificar o nome da folha, você também pode especificar a posição da folha. Aqui, estamos copiando e colando uma planilha antes da primeira planilha na pasta de trabalho.

1 Folhas ("Folha1"). Copiar antes: = Folhas (1)

A planilha recém-criada agora será a primeira planilha na pasta de trabalho.

Copiar folha após a última folha

Use a propriedade Depois para informar ao VBA para colar a folha DEPOIS de outra folha. Aqui, copiaremos e colaremos uma planilha após a última planilha na pasta de trabalho:

1 Planilhas ("Planilha1"). Copiar depois: = Planilhas (Planilhas.Contagem)

Observe que usamos Sheets.Count para contar o número de planilhas na pasta de trabalho.

Mover Folha

Você também pode mover uma planilha dentro de uma pasta de trabalho usando uma sintaxe semelhante. Este código moverá a Folha1 para o final da pasta de trabalho:

1 Folhas ("Folha1"). Mover depois: = Folhas (Folhas.Contar)

Cópia e Folha de Nome

Depois de copiar e colar uma planilha, a planilha recém-criada se torna a ActiveSheet. Portanto, para renomear nossa nova planilha, basta usar ActiveSheet.Name:

123456 Sub CopySheetRename1 ()Planilhas ("Planilha1"). Copiar depois: = Planilhas (Planilhas.Contagem)ActiveSheet.Name = "LastSheet"End Sub

Se o nome da planilha já existir, o código acima irá gerar um erro. Em vez disso, podemos usar “On Error Resume Next” para dizer ao VBA para ignorar a nomenclatura da planilha e prosseguir com o resto do procedimento:

12345678 Sub CopySheetRename2 ()Planilhas ("Planilha1"). Copiar depois: = Planilhas (Planilhas.Contagem)On Error Resume NextActiveSheet.Name = "LastSheet"No erro GoTo 0End Sub

Ou use nossa função RangeExists para testar se o nome da planilha já existe antes de tentar copiar a planilha:

123456789101112131415161718 Sub CopySheetRename3 ()If RangeExists ("LastSheet") ThenMsgBox "A planilha já existe."OutroPlanilhas ("Planilha1"). Copiar depois: = Planilhas (Planilhas.Contagem)ActiveSheet.Name = "LastSheet"Fim seEnd SubFunção RangeExists (WhatSheet As String, Opcional ByVal WhatRange As String = "A1") As BooleanDim test As RangeOn Error Resume NextSet test = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0No erro GoTo 0Função Final

Copiar e folha de nome com base no valor da célula

Você também pode querer copiar e nomear uma planilha com base em um valor de célula. Este código nomeará a planilha com base no valor da célula em A1

12345678 Sub CopySheetRenameFromCell ()Planilhas ("Planilha1"). Copiar depois: = Planilhas (Planilhas.Contagem)On Error Resume NextActiveSheet.Name = Range ("A1"). ValueNo erro GoTo 0End Sub

Copiar planilha para outra pasta de trabalho

Até agora, trabalhamos com a cópia de planilhas em uma pasta de trabalho. Agora abordaremos exemplos para copiar e colar planilhas em outras pastas de trabalho. Este código irá copiar uma planilha para o início de outra pasta de trabalho:

1 Folhas ("Folha1"). Copiar antes: = Pastas de trabalho ("Exemplo.xlsm"). Folhas (1)

Isso copiará uma planilha para o final de outra pasta de trabalho.

1 Planilhas ("Planilha1"). Copiar depois: = Pastas de trabalho ("Exemplo.xlsm"). Planilhas (Pastas de trabalho ("Exemplo.xlsm"). Planilhas.Contagem)

Observe que substituímos 1 com Cadernos de exercícios (“Exemplo.xlsm”). Planilhas.Contagem para obter a última planilha.

Copiar planilha para uma pasta de trabalho fechada

Você também pode querer copiar uma planilha para uma pasta de trabalho que está fechada. Este código abrirá uma pasta de trabalho fechada para que você possa copiar uma planilha nela.

123456789 Sub CopySheetToClosedWB ()Application.ScreenUpdating = FalseSet closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")Folhas ("Folha1"). Copiar antes: = livro fechado. Folhas (1)closedBook.Close SaveChanges: = TrueApplication.ScreenUpdating = TrueEnd Sub

Copiar folha de outra pasta de trabalho sem abri-la

Por outro lado, este código irá copiar uma planilha DE uma pasta de trabalho fechada sem a necessidade de abri-la manualmente.

123456789 Sub CopySheetFromClosedWB ()Application.ScreenUpdating = FalseSet closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")closedBook.Sheets ("Sheet1"). Copiar antes: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = FalseApplication.ScreenUpdating = TrueEnd Sub

Observe que em ambos os exemplos desabilitamos ScreenUpdating 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.

1234567891011121314 Sub CopySheetMultipleTimes ()Dim n As IntegerDim i As IntegerOn Error Resume Nextn = InputBox ("Quantas cópias você deseja fazer?")Se n> 0 entãoPara i = 1 para nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)PróximoFim seEnd Sub

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave