Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Lidiane Colli

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

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Lidiane Colli Qual o criterio do filtro da coluna A? 

O que  seria "todo conteudo referente a essa conta individualmente .."?

 

 

 

 

 

 

Editado por Basole
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Olá,

     

    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?

    21021000.pdf

    Compartilhar este post


    Link para o post
    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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á.

     

    Compartilhar este post


    Link para o post
    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

    Editado por Basole
    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Exemplo: Cada conta possui um endereço de email, preciso mandar esse pdf + um arquivo .xlx nomeado tambem como número da conta, para esse determinado email? Possui alguma forma de fazer isso?

     

    Desde já obrigada.

    Compartilhar este post


    Link para o post
    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.

     

     

     

     

     

     

     

     

     

     

     

     

    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






    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

    ×