Logo Hardware.com.br
thasr9
thasr9 Novo Membro Registrado
3 Mensagens 5 Curtidas

[Resolvido] Excel e VBA - Macro para copiar varias planilhas e colar em uma só.

#1 Por thasr9 07/12/2010 - 15:16
Olá, Pessoal!

Encontrei alguns posts relacionaos ao que preciso, mas nenhum deles resolveu minha dúvida.. alguém aí pode me ajudar?

Tenho uma pasta em um diretório com vários arquivos de excel. Todos eles possuem o mesmo formato e o mesmo cabeçalho e todos têm somente uma planilha. Estes arquivos têm quantidade variável de linhas, mas as colunas são sempre as mesmas, na mesma ordem. Os arquivos não têm um padrão de nome.

Eu preciso muito criar uma macro que faça o seguinte:

Copie as linhas das planilhas dos arquivos de excel deste diretório e cole-as em sequência, uma embaixo da outra em um outro arquivo de excel, com o mesmo cabeçalho.

Eu gravei as ações em uma macro bem primária (que são as que eu sei fazer por enquanto), que coloco de exemplo abaixo.

Sub EUROFRIGO1()
'
' EUROFRIGO1 Macro
' BATCH-COPY-EUROFRIGO
'
'
Range("A1").Select
Windows("F388806.XLS").Activate
Rows("7:7").Select
Selection.Copy
Windows("DADOS-EUROFRIGO.xls").Activate
ActiveSheet.Paste
Range("A2").Select
Windows("F388806.XLS").Activate
ActiveWindow.Close
Windows("F381293.XLS").Activate
Rows("7:8").Select
Selection.Copy
Windows("DADOS-EUROFRIGO.xls").Activate
ActiveSheet.Paste
Windows("F381293.XLS").Activate
ActiveWindow.Close
Range("A4").Select
Windows("F388807.XLS").Activate
Rows("7:7").Select
Selection.Copy
Windows("DADOS-EUROFRIGO.xls").Activate
ActiveSheet.Paste
Range("A5").Select
Windows("F388807.XLS").Activate
ActiveWindow.Close
End Sub

É mais ou menos isso que eu preciso que a macro faça, mas com a diferença de que o número de linhas não é constante nas planilhas copiadas e o nome das planilhas copiadas também é variável.

Eu passo mais da metade do meu dia só copiando e colando esses dados, essa macro vai mudar minha vida!

Não deve ser tão difícil, eu é que não tenho o conhecimento de VBA o suficiente... Tenho buscado em diversos sites e não consigo encontrar o que preciso.

Alguém aí consegue me quebrar essa árvore?

Obrigada!
Responder
Slugman
Slugman Super Participante Registrado
415 Mensagens 113 Curtidas
#2 Por Slugman
07/12/2010 - 16:20
Olá. Não é uma tarefa tão simples assim pra quem está começando ou conhece pouco de VBA. Assim como voce milhares de pessoas fazem tudo no braço e gastam horas fazendo coisas que com o VBA podem fazer em segundos.

Bom, a seguir eu coloquei um exemplo de como voce pode ler essas planilhas e colar as informações uma abaixo da outra. Algumas coisas que vc precisa verificar no codigo da minha macro:


Troque o caminho onde os arquivos estao salvos. No meu exemplo eu coloquei o C: direto, mas o ideal é vc ter esses arquivos em uma Pasta separada.


rTemp = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
Nessa linha eu uso a coluna "A" para saber quantas linhas a planilha aberta possui. Voce precisa indicar uma coluna que nunca vazia para que a macro "saiba" exatamente o numero de linhas que existe no arquivo aberto.


ActiveWorkbook.ActiveSheet.Range("A1:J" & rTemp).Copy shPadrao.Range("A" & r + 1)
Nessa linha eu copio da 1º até a ultima linha disponivel, mas se essa planilha tiver um cabeçalho a macro vai copia-la. Se existir o cabeçalho troque o Range("A1: por Range("A2. Além disso só copio da coluna A até a J. Se precisar modifique conforme sua necessidade.

Acho que é isso. Essas sao as alteraçoes que vc precisa fazer para ela funcionar legal. Dá pra melhorar e criar um jeito mais dinamico de escolher a pasta com as planilhas mas primeiro veja se funciona. As linhas da macro estao comentadas para poder dar uma ideia melhor do que cada linha esta fazendo.

Só pra constar, só te ajudei pq vc explicou bem explicadinho o seu problema, fica bem mais simples assim. Quando precisamos decifrar oq a pessoa precisa é dose.

Teste e de um feedback.

boa.gif
Phenom 965|M4A79-T|Corsair Force 2 80gb|Zotac GTX 660|Corsair VX 550|CoolerMaster CM690
thasr9
thasr9 Novo Membro Registrado
3 Mensagens 5 Curtidas
#6 Por thasr9
08/12/2010 - 10:25
Slugman: Muitíssomo obrigada!!!

Seus comentários foram super didáticos e consegui fazer funcionar perfeitamente para o que precisava!!!

Ajustei para começar a copiar as planilhas a partir da linha 3, onde não tem mais os cabeçalhos, e elas são todas coladas uma embaixo da outra sem problemas. Fora que a macro executa super-rápido! Nem vi as planilhas sendo abertas e fechadas. Sensacional! Nota 10.000 para você!

Certamente essa sua ajuda vai contribuir para muitas pessoas na WEB, que, como eu, fuçaram, fuçaram, fuçaram, mas não encontraram nada.

Tópico super bem resolvido!

Mais uma vez um enorme: Obrigada!


big_green.png
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal