Página 1 de 1

Agrupar diversas abas em apenas uma planilha.

Enviado: 05 Set 2019 às 19:37
por jfelicio1
Prezados,

Tenho Planilha A e Planilha B. Cada uma possui 11 abas.

Porém, dessas 11 abas apenas 4 me interessam.

Preciso de uma macro que pegue essas 4 abas específicas de Planilha A e Planilha B e cole os dados um embaixo do outro na planilha C.

Grato desde já.

Re: Agrupar diversas abas em apenas uma planilha.

Enviado: 05 Set 2019 às 20:26
por Jimmy
Olá Felício,

Pra fazer a macro precisamos saber onde estão os dados, quais os nomes das pastas de trabalho, das planilhas, etc.

Você deve mandar um modelo do ambiente, pra que possamos desenvolver e fazer testes em cima deles.

Jimmy San Juan

Re: Agrupar diversas abas em apenas uma planilha.

Enviado: 06 Set 2019 às 00:49
por jfelicio1
Segue a Planilha de uma das 300 ações (300 planilhas) que possuo na mesma pasta.

Todas estão nesse formato e com os mesmo nomes das abas. Cada ação tem uma planilha com os dados específicos.

O que eu preciso são copiar todos os dados dessas abas específicas, em cada uma das planilhas:

"DRE 10-18 Consolidado"
"Ativos 10-18 Consolidado"
"Passivos 10-18 Consolidado"
"Fluxo de caixa 10-18 Consolidad"

e tudo em uma planilha, tudo em uma aba. Ex:

Copia tudo da aba"DRE 10-18 Consolidado", cola na planilha agrupada, depois copia tudo da aba "Ativos 10-18 Consolidado" e cola uma linha abaixo dos dados anteriores. De modo que eu tenha todos esses dados, das 300 planilhas em apenas 1 planilha e em 1 aba, tudo um embaixo do outro.

Obrigado e fico a disposição

Re: Agrupar diversas abas em apenas uma planilha.

Enviado: 06 Set 2019 às 04:22
por babdallas
Fiz com PowerQuery (grupo Obter e Transformar na Gui Dados a partir do Excel 2016).

Re: Agrupar diversas abas em apenas uma planilha.

Enviado: 06 Set 2019 às 04:39
por babdallas
Explicando: toda planilha que contiver "Consol" no seu nome, ele irá agrupar na planilha Agrupada ao clicar no botão Atualizar Tudo na guia Dados do Excel.

Agrupar diversas abas em apenas uma planilha.

Enviado: 06 Set 2019 às 08:24
por jfelicio1
Bom dia,

Obrigado pela resposta. Mas o problema é que nesse caso você agrupou todas as abas com "Consol" no nome, e algumas delas não eram para serem agrupadas, por exemplo "DRE 00-09 Consolidado". As que eu preciso, em específico são:

"DRE 10-18 Consolidado"
"Ativos 10-18 Consolidado"
"Passivos 10-18 Consolidado"
"Fluxo de caixa 10-18 Consolidad"

Eu imagino que tenha que ser em VBA, pois executaria uma só vez em 1 planilha e ele conseguiria acessar as outras 300 que estão na mesma pasta (mesmo fechadas), copiar essa informação e agrupar tudo em uma planilha.

PS: consegui um código que faz exatamente o que eu queria, porém ele agrupa de todas as abas, se tiver como modificar esse código só para escolher as sheets que disse que precisava fica perfeito. Segue o VBA que ficará na planilha principal agrupada:

------- UnificarPlanilhas Macro
Sub lsUnificarPlanilhas()
On Error GoTo Sair

Dim lUltimaColunaAtiva As Long
Dim lUltimaLinhaAtiva As Long
Dim lRng As Range
Dim sPath As String
Dim fName As String
Dim lNomeWB As String
Dim lIPlan As Integer
Dim lUltimaLinhaPlanDestino As Long

PlanilhaDestino = ThisWorkbook.Name

sPath = Localizar_Caminho

sName = Dir(sPath & "\*.xl*")

Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

Do While sName <> ""
fName = sPath & "\" & sName
Workbooks.Open Filename:=fName, UpdateLinks:=False

lNomeWB = ActiveWorkbook.Name

For lIPlan = 1 To ActiveWorkbook.Sheets.Count
Workbooks(lNomeWB).Worksheets(lIPlan).Activate

lUltimaLinhaAtiva = Cells(Rows.Count, 1).End(xlUp).Row
lUltimaColunaAtiva = ActiveSheet.Cells(1, 5000).End(xlToLeft).Column

Set lRng = Range(Cells(1, lUltimaColunaAtiva).Address)

Range("A" & 1 & ":" & gfLetraColuna(lRng) & lUltimaLinhaAtiva).Select
Selection.Copy

Workbooks(PlanilhaDestino).Worksheets(1).Activate

lUltimaLinhaPlanDestino = Cells(Rows.Count, 1).End(xlUp).Row

If lUltimaLinhaPlanDestino > 1 Then
lUltimaLinhaPlanDestino = Cells(Rows.Count, 1).End(xlUp).Row + 1
End If

Range("A" & lUltimaLinhaPlanDestino).Select

ActiveSheet.Paste
Application.CutCopyMode = False
Next lIPlan

Workbooks(lNomeWB).Close SaveChanges:=False
sName = Dir()
Loop

MsgBox "Planilhas unificadas!"

Sair:
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub

Function gfLetraColuna(ByVal rng As Range) As String
Dim lTexto() As String

lTexto = Split(rng.Address, "$")

gfLetraColuna = lTexto(1)
End Function

Public Function Localizar_Caminho() As String

Dim strCaminho As String

With Application.FileDialog(msoFileDialogFolderPicker)

'Permitir mais de uma pasta
.AllowMultiSelect = False

'Mostrar janela
.Show

If .SelectedItems.Count > 0 Then
strCaminho = .SelectedItems(1)
End If

End With

'Atribuir caminho a variável
Localizar_Caminho = strCaminho

End Function

Re: Agrupar diversas abas em apenas uma planilha.

Enviado: 06 Set 2019 às 13:37
por babdallas
Fiz a correção para filtrar as planilhas que contém "10-18 Consol".
Também acrescentei um parâmetro referente ao caminho da pasta do arquivo atual, que pode ser alterado no PowerQuery.

A solução também pode ser via VBA, mas acredito que via PowerQuery seja um pouco mais simples. Para esta solução ficar um pouco melhor, eu usaria o VBA para obter o caminho da pasta atual para então alimentar o parâmetro do PowerQuery.

Agrupar diversas abas em apenas uma planilha.

Enviado: 06 Set 2019 às 14:46
por jfelicio1
Consegui mudar o caminho para a pasta atual nesse arquivo. Ele reconheceu.

Desculpe minha ignorância, mas como eu faço para ele mostrar os dados das outras planilhas nessa mesma aba agrupada?

Ps: os dados filtrados que você fez estão perfeitos, falta só aparecer das demais planilhas junto.

Obrigado mais uma vez

Re: Agrupar diversas abas em apenas uma planilha.

Enviado: 06 Set 2019 às 15:55
por babdallas
As outras planilhas têm em alguma parte do nome o texto "10-18 Consol" no nome? Se tiver, basta clicar em Atualizar Tudo. Se não tiver, aí precisa mudar a maneira de fazer e achar um padrão para filtrar os nomes das planilhas de forma apropriada.

Agrupar diversas abas em apenas uma planilha.

Enviado: 06 Set 2019 às 16:14
por jfelicio1
Funcionou perfeitamente. Consegui agrupar e entendi o procedimento. Muito obrigado!!