Copie um intervalo de cada planilha em uma planilha usando VBA no Microsoft Excel

Anonim

Neste artigo, criaremos uma macro para copiar dados de todas as planilhas da pasta de trabalho para uma nova planilha.

Os dados brutos para este exemplo consistem em detalhes de funcionários de departamentos diferentes em planilhas diferentes. Queremos consolidar os detalhes dos funcionários em uma única planilha.

Criamos a macro “CopyRangeFromMultipleSheets” para a consolidação dos dados. Esta macro pode ser executada clicando no botão “Consolidar dados”.

Macro irá criar uma nova planilha e inserir os dados consolidados de todas as planilhas.

Explicação do código

Faça um 'loop' por todas as planilhas para verificar se a planilha "Master" existe.

Para cada fonte neste livro de trabalho.Folhas de trabalho

Se Source.Name = "Master" então

MsgBox "A planilha mestre já existe"

Sair do Sub

Fim se

Próximo

O código acima é usado para verificar se a planilha “Mestre” existe na pasta de trabalho. Se a planilha “Master” existir na pasta de trabalho, o código será encerrado e uma mensagem de erro será exibida.

Source.Range ("A1"). SpecialCells (xlLastCell) .Row

O código acima é usado para obter o número da linha da última célula da planilha.

Source.Range ("A1", Range ("A1"). SpecialCells (xlLastCell)). Copiar Destination.Range ("A" & DestLastRow)

O código acima é usado para copiar o intervalo especificado para a célula definida.

Siga abaixo para o código

 Sub CopyRangeFromMultipleSheets () 'Declarando variáveis ​​Dim Source As Worksheet Dim Destination As Worksheets Dim SourceLastRow, DestLastRow As Long Application.ScreenUpdating = False' Loop por todas as planilhas para verificar se a planilha "Mestre" existe para cada fonte neste livro.Fichas de trabalho If Source.Name = "Master" Then MsgBox "Planilha mestre já existe" Exit Sub End If Next 'Inserindo uma nova planilha após a planilha "Principal" Definir Destino = Planilhas.Adicionar (após: = Planilhas ("Principal")) Destino.Nome = " Master "'Looping por todas as planilhas na pasta de trabalho para cada fonte nesta pasta de trabalho.Fichas de trabalho' Impedindo a consolidação de dados da planilha" Principal "e" Mestra "If Source.Name" Main "e Source.Name" Master "Then SourceLastRow = Source .Range ("A1"). SpecialCells (xlLastCell) .Row Source.Activate If Source.UsedRange.Count> 1 Then DestLastRow = Sheets ("Master"). Range ("A1"). SpecialCells (xlLastCell) .Row If DestLastRow = 1 Então 'copiando dados da planilha de origem para a planilha de destino Source.Range ("A 1 ", Range (" A1 "). SpecialCells (xlLastCell)). Copiar Destination.Range (" A "& DestLastRow) Else Source.Range (" A2 ", Range (" A1 "). SpecialCells (xlCellTypeLastCell)). Copiar Destination.Range ("A" & (DestLastRow + 1)) End If End If End If Next Destination.Activate Application.ScreenUpdating = True End Sub 

Se você gostou deste blog, compartilhe com seus amigos no Facebook. Além disso, você pode nos seguir no Twitter e no Facebook.

Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar nosso trabalho e torná-lo melhor para você. Escreva para nós no site de e-mail