Ir ao conteúdo
  • Cadastre-se

Filtrar e Salvar Informações - Através de VBA/Excel


Posts recomendados

Boa Tarde Pessoal,

 

Estou precisando de uma ajuda para montar um VBA ou Macro que filtre a coluna A "Conta" e salve todo o conteúdo referente a essa conta individualmente em PDF, em uma pasta chamada rede na area de trabalho. cada conta no layout da pagina em orientação Paisagem.

 

Alguém pode me auxiliar para montar essa VBA/Macro, estou precisando pois é um trabalho semanal que tenho que operacionalizar na empresa.

 

Alguém pode me ajudar a montar o código, pois estou iniciando e não consegui montar sozinha, agradeço desde já.


Desde já muito obrigada.

Arquivo esta em anexo.

Base - 20.03.2017.xlsx

Link para o comentário
Compartilhar em outros sites

Boa tarde Lidiane

 

De uma olhada no código abaixo, tentei anexar a planilha mas não consegui, o único problema é que tem que copiar o código para cada conta, acho que da para melhorar, mas ainda estou começando também.

Coloquei para salvar em excel, caso não precise basta eliminar o código.

Eu criei um botão e atribui a macro "Extrair_Conta" a ele.

 

Espero que ajude.

 

Dim Nome_Conta As Variant

 

Sub Extrair_Conta()

    '1º Conta
    'Realiza um filtro com base por projeto e armazena o nome do projeto na variavel Nome_Conta
       
    ActiveSheet.Range("$A:$F").AutoFilter Field:=1, Criteria1:="=22654000"
    Nome_Conta = "Conta 22654000"
        
    'cria uma nova planilha e copia e cola o conteudo filtrado acima e salva com o nome do projeto
    'Deve ser alterado o local onde será salva a planilha
    Range("A9").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Selection.Columns.AutoFit
    Application.CutCopyMode = False
    ChDir "C:\Users\esdras.pelegrin\Desktop"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\esdras.pelegrin\Desktop\" & Nome_Conta & ".xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.ActivateNext
    
    'Altera a orientação para paisagem
    ActiveSheet.PageSetup.Orientation = xlLandscape
    
    'Salva a Planilha em PDF sem abrir o PDF, se "openafterpublish:= Sim" ele abre o PDF
    'Deve ser alterado o local onde será salva a planilha
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
     "C:\Users\esdras.pelegrin\Desktop\" & Nome_Conta & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        openafterpublish:=False
    ChDir "C:\Users\esdras.pelegrin\Desktop"
      
    'Seleciona uma planilha de acordo com o nome atribuido a variavel e fecha a mesma.
    Windows(Nome_Conta).Activate
    ActiveWindow.Close

'-----------------------------------------------------------------------------------------------------
    '2º Conta
    'Realiza um filtro com base por projeto e armazena o nome do projeto na variavel Nome_Conta
    ActiveSheet.Range("$A:$F").AutoFilter Field:=1, Criteria1:="=21207000"
    Nome_Conta = "Conta 21207000"
    
    'cria uma nova planilha e copia e cola o conteudo filtrado acima e salva com o nome do projeto
    Range("A9").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Selection.Columns.AutoFit
    Application.CutCopyMode = False
    ChDir "C:\Users\esdras.pelegrin\Desktop"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\esdras.pelegrin\Desktop\" & Nome_Conta & ".xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.ActivateNext
  
    'Altera a orientação para paisagem
    ActiveSheet.PageSetup.Orientation = xlLandscape
  
    'Salva a Planilha em PDF sem abrir o PDF, se "openafterpublish:= Sim" ele abre o PDF
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\esdras.pelegrin\Desktop\" & Nome_Conta & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        openafterpublish:=False
    ChDir "C:\Users\esdras.pelegrin\Desktop"
  
    'Seleciona uma planilha de acordo com o nome atribuido a variavel e fecha a mesma.
    Windows(Nome_Conta).Activate
    ActiveWindow.Close
    
    'Limpa todos os filtros
    Selection.AutoFilter
    Range("A9:I9").Select
    Selection.AutoFilter
    Range("A1").Select

MsgBox "Processo Finalizado"

End Sub

 

adicionado 43 minutos depois

Segue a macro com a alteração para apenas gerar gerar o PDF

 

Dim Nome_Conta As Variant

Sub Extrair_Conta()

    '1º Conta
    'Realiza um filtro por conta e armazena o nome da Conta na variavel Nome_Conta
       
    ActiveSheet.Range("$A:$F").AutoFilter Field:=1, Criteria1:="=22654000"
    Nome_Conta = "Conta 22654000"
       
    'Altera a orientação para paisagem
    ActiveSheet.PageSetup.Orientation = xlLandscape
    
    'Salva a Planilha em PDF sem abrir o PDF, se "openafterpublish:= Sim" ele abre o PDF
    'Deve ser alterado o local onde será salva a planilha
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
     "C:\Users\esdras.pelegrin\Desktop\" & Nome_Conta & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        openafterpublish:=False
    ChDir "C:\Users\esdras.pelegrin\Desktop"
      
    '-----------------------------------------------------------------------------------------------------
    '2º Conta
    'Realiza um filtro por conta e armazena o nome da Conta na variavel Nome_Conta
    ActiveSheet.Range("$A:$F").AutoFilter Field:=1, Criteria1:="=21207000"
    Nome_Conta = "Conta 21207000"
        
    'Altera a orientação para paisagem
    ActiveSheet.PageSetup.Orientation = xlLandscape
  
    'Salva a Planilha em PDF sem abrir o PDF, se "openafterpublish:= Sim" ele abre o PDF
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\esdras.pelegrin\Desktop\" & Nome_Conta & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        openafterpublish:=False
    ChDir "C:\Users\esdras.pelegrin\Desktop"
  
'-----------------------------------------------------------------------------------------------------
    
    'Limpa todos os filtros
    Selection.AutoFilter
    Range("A9:I9").Select
    Selection.AutoFilter
    Range("A1").Select

MsgBox "Processo Finalizado"

End Sub
 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Boa noite, desta forma terei que criar um código por conta? 

 

Não tem nada que faca isso de uma maneira mais rápida? 

 

Terei que criar todos os códigos com as contas para depois executar e isso né? 

 

Não tem nada que eu consiga fazer diferente disso? 

 

Obrigada desde já.

 

Link para o comentário
Compartilhar em outros sites

Citação
Citação

Eu  preciso filtrar todas as informações que constam nesta base por conta ( coluna A).

Conforme anexo. (precisa ficar salvo desta maneira) Individualmente por Conta ( colunaA)

Deu para entender?

 

Sim entendi.

Eu criei uma lista com os numeros de contas distintas na coluna G e a partir desta lista a macro faz um loop filtrando cada conta e salvando o conteudo filtrado, em pdf na pasta especificada.

 

Ajuste caminho completo (diretorio) da pasta, onde deseja salvar os Pdf(s), na celula H1.

 

 

 

  

 

Base - 20.03.2017.zip

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Boa noite, vou abrir o arquivo amanhã cedo ok. Ai qualquer dúvida informo aqui. Desde ja muito obrigada pela ajuda. 

 

adicionado 16 minutos depois
1 hora atrás, Basole disse:

Sim entendi.

Eu criei uma lista com os numeros de contas distintas na coluna G e a partir desta lista a macro faz um loop filtrando cada conta e salvando o conteudo filtrado, em pdf na pasta especificada.

 

Ajuste caminho completo (diretorio) da pasta, onde deseja salvar os Pdf(s), na celula H1.

 

 

 

  

 

Base - 20.03.2017.zip

Acabei baixando aqui em casa mesmo. é isso ai, muito obrigada deu certinho. Outra dúvida que tenho, é muito difícil para eu utilizar essa macro e fazer  disparar o email? 

Ex. Ela separa os arquivos e já envia cada conta para um determinado email, tem como fazer isso?

 

Outra dúvida, eu tenha varias bases que preciso separar por conta, posso usar o mesmo código sempre, só cuidando as colunas?

 

Mais uma vez obrigada.

 

adicionado 16 minutos depois

Acabei baixando aqui em casa mesmo. é isso ai, muito obrigada deu certinho. Outra dúvida que tenho, é muito difícil para eu utilizar essa macro e fazer  disparar o email? 

Ex. Ela separa os arquivos e já envia cada conta para um determinado email, tem como fazer isso?

 

Outra dúvida, eu tenha varias bases que preciso separar por conta, posso usar o mesmo código sempre, só cuidando as colunas?

 

Mais uma vez obrigada.

Link para o comentário
Compartilhar em outros sites

Bom dia @Lidiane Colli,

Sim é possivel, aproveitando a rotina que eu ja fiz, pode acrescentar no script o envio do pdf e o *.xlsx em anexo para cada respectiva conta de e-mail. 

Mas isso é algo mais elaborado e que requer boas horas de programação.

 

 

 

 

 

 

 

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 3 anos depois...
Em 20/03/2017 às 20:24, Basole disse:

Sim entendi.

Eu criei uma lista com os numeros de contas distintas na coluna G e a partir desta lista a macro faz um loop filtrando cada conta e salvando o conteudo filtrado, em pdf na pasta especificada.

 

Ajuste caminho completo (diretorio) da pasta, onde deseja salvar os Pdf(s), na celula H1.

 

 

 

  

 

Base - 20.03.2017.zip

Será que vocês ainda teriam esse arquivo? Estou passando por uma situação bem parecida. Obrigado! @Lidiane Colli @Basole

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...