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