Ir ao conteúdo
  • Cadastre-se
Bruno Rodrigues_775653

Separando planilha excel por cliente VBA

Recommended Posts

Bom dia!

Preciso de ajuda para criar uma planilha onde contem os campos:

Nome, CNPJ, E-mail



(A planilha real terá mais campos, porém este será o filtro básico).

A função da macro seria basicamente pegar o primeiro CNPJ (linha 2), filtra-lo para encontrar todos os cadastros com o mesmo CNPJ, depois disto a macro gera um novo arquivo em XLS com o nome Nº DA LINHA_NOME_DATA (ex: 04_microsoft_02102015.xls), após gerar planilha ele copiaria as informações do filtro e colaria na nova planilha, depois voltaria para a planilha do filtro, excluiria as linhas do relatório, desfazia o filtro. Tudo isso dentro de um LOOP que para quando a coluna c estiver vazia.



Eu fiz a minha aqui, porém ele para e retorna em um erro que não consigo corrigir (eu fiz para criar sheet até que terminasse a macro).

Ele vai, copia a primeira, só que na hora do loop ele dá erro, começa a gerar sheets com o o nome PLAN
 

Sub exec()Dim linha AsIntegerDim sheetname AsStringlinha =2linha2 =2x = Range("C"& linha).Valuem = Split(n," ")(0)sheetname = linha2 &"_"& mWith ActiveSheetDoWhile Range("C"& linha).Value <>"".AutoFilterMode =FalseWith Range("C1", Range("C"& Rows.Count).End(xlUp)).AutoFilter 1, xOnErrorResumeNextSheets.Add.Name = sheetnameSheets("Plan2").SelectRange("A2:D"& Rows.Count).SpecialCells(xlCellTypeVisible).SelectSelection.CopySheets(sheetname).SelectRange("A1").SelectRange("A1").PasteSpecialSheets("Paste2").Select.Offset(1).SpecialCells(12).EntireRow.DeleteSheets("Paste2").SelectRange("c1").Select.AutoFilterMode =FalseSheets("Plan2").SelectActiveSheet.Range("$C$1:C"& Rows.Count).AutoFilter Field:=1linha = linha +1EndWithLoopEndWithEndSub

Eu preciso que ele gere novos arquivos, ou se possível seja incluido em uma planilha já existente chamada mb.xls na linha B11 esta planilha tem um limite de colunas, então eu acrescentarei um codigo ao qual ele excluira algumas colunas nas quais não utilizarei mais.

O arquivo original contém vai desde a coluna A até a AB
as colunas que serão excluídas serão: A,B,C - F,G - J,N - P (conforme codigo que será incluido para excluir as colunas abaixo)

Código (Text):
   Worksheets("Temp").Columns(1).Delete
   Worksheets("Temp").Columns(1).Delete
   Worksheets("Temp").Columns(1).Delete
   Worksheets("Temp").Columns(1).Delete
   Worksheets("Temp").Columns(7).Delete
   Worksheets("Temp").Columns(7).Delete
   Worksheets("Temp").Columns(7).Delete
   Worksheets("Temp").Columns(7).Delete
   Worksheets("Temp").Columns(9).Delete
   Worksheets("Temp").Columns(7).Delete

A coluna (após as exclusões) na qual ficará o campo de filtro será a Q
A coluna onde ficará o código do cliente é a P

Ele filtra todos os clientes com o mesmo nome, cria uma nova planilha para ser salvo em algum diretorio no computador (de preferência no mesmo diretorio onde ficará a planilha) e então ele copia e deleta do relatório orignal a linha já utilizada. Já procurei diversos codigos prontos e tentei organiza-lo da forma que eu desejo porém sempre resulta alguma mensagem de erro.

Se puder ajudar fico imensamente grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×