Exportar relatório para PDF: VBA e FILTRAR - Exceldriven

Exportar um Relatório para PDF com VBA e a Função FILTRAR

Neste novo artigo, vou mostrar-te como podes usar a função FILTRAR para obter um conjunto de dados sobre um determinado critério. Vamos lá?

Uma das razões pela qual utilizamos a função FILTRAR [FILTER] no Excel é para obter um conjunto de dados individualizados sobre um determinado critério. Com a função FILTAR esses dados podem ser dinamicamente apresentados num relatório à parte, por exemplo numa nova folha ou mesmo num novo ficheiro.

Neste sentido, esse relatório, pode ser exportado instantaneamente para cada critério do FILTRO. É isso que vamos fazer neste Tutorial.

Não percas aqui o cenário de exemplo que partilho contigo, assim como o processo passo a passo. Se tiveres alguma dúvida, envia-nos a uma mensagem... ficamos à tua espera!


Faça aqui o download dos seus ficheiros de apoio!


Preparar os dados

Começamos por preparar os dados convertendo o intervalo numa tabela.

img_01.png

A tabela é definida com cabeçalhos.

img_02.png

E damos o nome à tabela: Marcas.

img_03.png

Definir a lista com todas as possíveis marcas da tabela

Uma vez que a tabela pode ter dados no futuro, vamos criar uma lista dinâmica, sem duplicados,  com as marcas, utilizando a função EXCLUSIVOS [UNIQUE].

=EXCLUSIVOS(Marcas[Marca])

img_04.png

Esta lista será utilizada pela rotina em VBA, para correr todos os itens da lista, e aplicar o filtro de uma forma dinâmica e instantânea no relatório.

De seguida criamos uma folha para o relatório.

img_05.png

Definir os dados do relatório

No relatório vamos ter apenas uma extração simples dos dados, mas podes formatar o relatório a teu gosto. A função FILTRAR neste caso filtra apenas os dados da tabela, sendo que o cabeçalho é definido na folha.

Uma vez que o valor da célula E3, onde vai constar o critério para o filtro está sem valor, colocamos o último argumento da função [se_vazia] com um valor “Sem Dados”.

Este valor da célula E3 será preenchido através do código VBA.

=FILTRAR(Marcas;Marcas[Marca]=E3;"Sem Dados")

img_06.png

Criar a rotina em VBA

Começamos por aceder ao menu Programador [Developer] e ao comando.

img_07.png

A seguir criamos um módulo para conter o código.

img_08.png

No novo módulo começamos por definir as variáveis que vão ser utilizadas:

  • Uma variável [Célula] para determinar o valor da célula que identifica a marca.
  • Uma variável [Intervalo] para determinar o intervalo com a lista de marcas que será iterado pelo ciclo.
  • Uma variável [Caminho] para guardar o caminho onde serão guardados os PDF. Esta variável é opcional, mas facilita a lógica caso o utilizador pretenda mudar o caminho no futuro.
Sub ExportarIntervalo()
    Dim Celula As Range
    Dim Intervalo As Range
    Dim Caminho As String
End Sub

A seguir atribuímos as variáveis aos objetos.

Sub ExportarIntervalo()
    Dim Celula As Range
    Dim Intervalo As Range
    Dim Caminho As String

Folha1.Activate 
'   Definir o Intervalo com uma variável através da lista única
    Set Intervalo = Folha1.Range("I3", Range("I3").End(xlDown))
'   Definir o caminho a guardar o ficheiro
    Caminho = ThisWorkbook.Path

No próximo passo do código podemos aplicar algumas configurações à página.

With Folha2.PageSetup
        .PrintArea = "$A$1:$H$20"    ‘Definir a área de impressão
        .Orientation = xlLandscape    ‘Definir a orientação da página
        .CenterHorizontally = True    ‘Centrar a área de impressão (horizontal)
        .CenterVertically = True    ‘Centrar a área de impressão (vertical)
End With

Na última parte do código, definimos o ciclo que vai correr cada marca da lista, colocar o valor na célula para aplicar o critério do filtro e ainda exportar cada filtro para um ficheiro em formato PDF independente.

For Each Celula In Intervalo
        Folha2.Range("E3").Value = Celula.Value
        Folha2.ExportAsFixedFormat xlTypePDF, Caminho & "\" & Celula.Text
    Next Celula
End Sub

Assim o código completo da rotina é o indicado em baixo.

Sub ExportarIntervalo()
    Dim Celula As Range
    Dim Intervalo As Range
    Dim Caminho As String
    Folha1.Activate
'   Definir o Intervalo com uma variável através da lista única
    Set Intervalo = Folha1.Range("I3", Range("I3").End(xlDown))
'   Definir o caminho a guardar o ficheiro
    Caminho = ThisWorkbook.Path
'   Definir as propriedades para a folha a imprimir
    With Folha2.PageSetup
        .PrintArea = "$A$1:$H$20"   ' Definir a área de impressão
        .Orientation = xlLandscape  ' Aplicar a orientação da página
        .CenterHorizontally = True  ' Centrar na horizontal
        .CenterVertically = True    ' Centrar na vertical
    End With
'   Definir o ciclo para o Filtro
    For Each Celula In Intervalo
        Folha2.Range("E3").Value = Celula.Value
        Folha2.ExportAsFixedFormat xlTypePDF, Caminho & "\" & Celula.Text
    Next Celula
End Sub

Outros conteúdos relevantes:

VBA e função FILTRAR: Exportar um relatório para PDF

VBA e função FILTRAR: Exportar um relatório para PDF

Neste novo vídeo, vou mostrar-te como podes usar a função FILTRAR para obter um conjunto de dados sobre um determinado critério.

Continuar a ler...

Ferramenta Goal Seek - Potencie-a com a ajuda do VBA!

Ferramenta Goal Seek - Potencie-a com a ajuda do VBA!

Conhece, ou já alguma vez utilizou a ferramenta Goal Seek? Se não, fique a saber que é uma ferramenta bastante útil, na gestão...

Continuar a ler...

 

Pesquisar


Consulte aqui os últimos artigos publicados no nosso blog!

Aceda aqui ao nosso blog!


Consulte aqui os últimos vídeos publicados no nosso canal do Youtube!

Aceda aqui ao nosso arquivo!

Assista, ouça, pratique e aprenda!

Na nossa oferta, disponibilizamos cursos intensivos que lhe dão um conhecimento alargado dos programas, dependendo dos seus objetivos e nível de conhecimento. Para além disso, dispomos também de cursos on-demand que tem, entre outros aspetos, têm como principal objetivo ajudá-lo a resolver problemas específicos do dia-a-dia, sem ter necessidade de assistir a um curso completo.

Aprenda a maximizar o seu tempo e aumente a sua produtividade com a ferramenta mais utilizada em todo o mundo – o Microsoft Excel! Conheça a nossa oferta formação especializada e Ferramentas de Business Intelligence! Vamos lá?!

Microsoft Excel

Fique a conhecer as principais funcionalidades do Microsoft Excel, e ser autónomo no seu trabalho, temos um conjunto de cursos que o podem ajudar a chegar ao seu objetivo!

Veja aqui aos cursos disponíveis!

Business Intelligence

Passe ao próximo nível e conheça a nossa oferta de cursos especializados utilizando as potencialidades de Business Intelligence do Microsoft Excel, ou utilizando o Power Bi Desktop.

Veja aqui os cursos disponíveis!

VBA (Visual Basic for Applications)

Estenda as capacidades do Microsoft Excel, e controle quase a totalidade dos aspetos da aplicação, utilizando o VBA! Uma linguagem de programação à disposição de todos os utilizadores.

Veja aqui os cursos disponíveis!

Subscreva as nossas notícias e novidades!

Tem uma dúvida que gostava de ver esclarecida?

Contacte-nos através do seguinte formulário.

Pretendemos ajudá-lo a trabalhar, de forma eficiente, o Microsoft Excel e as Ferramentas Power Platform (Power BI, Power Apps e Power Automate).

O que pretendemos é que possa economizar tempo e aumentar a sua produtividade.

A nossa solução... uma oferta formativa de qualidade e em diversos modelos formativos, com conteúdos práticos, disruptivos e inovadores!

Consulte aqui todas as modalidades, ou contacte-nos para receber mais informações. Basta utilizar o formulário aqui disponível, ou o email geral@exceldriven.com. Até breve!

O que os nossos clientes dizem sobre nós?

Depoímentos

Os conteúdos são muito bem explicados. As dúvidas dissipadas em curto espaço de tempo.
Rui Filipe -

Excelente apresentação e organização da Formação em Excel Avançado
Balbina Zambujo -

O formador João Teixeira consegue tornar um assunto à partida monótono, em algo desafiante e cativante. Gostei imenso!
Maria Flores Macedo -

Excelente formação, com conteúdos didáticos e exercícios adaptados ao nível dos formandos. Recomendo!
Pramod Maugi -

Formação muito bem organizada e focada para as nossas necessidades. Recomendo.
Pedro Gomes -

Excelente instrutor, muito bons treinamentos e aquisição de conhecimentos.
Eunice Ramalho -

Excelente empresa a nível de formação. De realçar o formador Joao Teixeira, profissional 5 estrelas.
Bruno Matos -

Tive uma formação de excel fundamental via zoom e, apesar das limitações apresentadas por ser uma formação online, foi ministrada com grande êxito, tendo tido pleno aproveitamento.
Patricia Martins -

Boa tarde, Dou 5 estrelas pois o método de ensino é espetacular, as lições são muito bem sumarizadas, a interação entre o formador e o formando é eficaz possibilitando maior assimilação da matéria, e com o espaço para a resolução de exercícios tornam as aulas mais dinâmicas e proveitosas.
Yara Agostinho -