- Copiar planilha para nova pasta de trabalho
- Copiar várias folhas para uma nova pasta de trabalho
- Copiar folha dentro da mesma pasta de trabalho
- Mover Folha
- Cópia e Folha de Nome
- Copiar planilha para outra pasta de trabalho
- Copiar planilha para uma pasta de trabalho fechada
- Copiar folha de outra pasta de trabalho sem abri-la
- Duplicar planilha do Excel várias vezes
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 |