Como criar macro para copiar linhas preenchidas de varias abas diferentes em uma aba referencia, sendo que as linhas coladas deverão ficar na sequencia, embaixo umas das outras?


#1

Boa noite!
Preciso de uma macro que copie as linhas preenchidas (que variam de aba para aba) de diferentes abas, para uma aba global, sendo que as linhas de cada aba copiada deverão ficar embaixo da ultima aba colada.
Exemplo:
Plan1 - aba de referencia
Plan2 - vai de A2 a M7
Plan3 - vai de A2 a M20

Primeiro teria que copiar A2:M7 (Plan2)
Colar na Plan 1 A1
Depois Copiar A2:M20 (Plan3) e colar na Plan1 na primeira linha em branco abaixo do que foi colado anteriormente.

Alguem poderia me ajudar, por favor?
Obrigada


#2

Segue:

Sub copiar()
Dim ul As Long
Plan2.Range("A2:M7").Copy Destination:=Plan1.Range("A1")
ul = Plan1.Range("A" & Rows.Count).End(xlUp).Row
Plan3.Range("A2:M20").Copy Destination:=Plan1.Range("A" & ul + 1)
End Sub

#3

Muito obrigada, @xlarruda!
Acho q eu nao me expliquei direito…
Eu preciso q ele selecione automaticamente o range de cada planilha, de acordo com o q estiver preenchido (pq varia de aba pra aba e eu tenho mais de 200 abas pra copiar uma embaixo da outra nessa outra planilha global)… e q copie a qtdade de abas q tiverem abertas no arquivo, automaticamente…
Poderia me ajudar, por favor?


#4

Desculpe, segue corrigido:


#5

Imagina, @xlarruda ! Nao tem pq se desculpar… só tenho a agradecer…
Uma dúvida: desse jeito ele nao vai copiar só a Plan2 e Plan3? Como faço pra fazer ele copiar tds as planilhas abertas no arquivo ?
Obrigada novamente


#6

Segue:

Sub copiar()
Dim ul As Long
For i = 2 To Sheets.Count
ul = Plan1.Range("A" & Rows.Count).End(xlUp).Row
If ul = 1 Then
Sheets(i).UsedRange.Copy _
Destination:=Plan1.Range("A" & ul)
Else
Sheets(i).UsedRange.Copy _
Destination:=Plan1.Range("A" & ul + 1)
End If
Next i
End Sub

#7

Muitíssimo obrigada!!
Deus abençoe!