Pergunte aqui
0

Como fazer um filtro avançado com macro?

perguntadas 2020-05-21 20:15:56 +0200

imagem do gravatar de VitorNicollas

updated 2020-05-26 13:40:22 +0200

imagem do gravatar de Conrado

Sei como usar o filtro avançado, mas quero saber como faz pra salvar todas as etapas gravando uma macro. Quando coloco pra gravar a macro e realizo o passo a passo pra pesquisar no filtro avançado. A macro não salva. Ex: Eu tenho um banco de dados com: (nome idade endereço email) Eu quero pesquisar o nome da pessoa e na caixa de resultados me informar os dados dela. Sem ter que dar aquela volta toda dentro do filtro avançado novamente. Atribuindo a macro para um botão. Desde ja agradeço


Eu ainda estou com dificuldade para aplicar esse código. A minha planilha esta assim.

Descrição da imagem

E o banco de dados está em outra Planilha.

Descrição da imagem

Como consigo executar o filtro avançado com macro? E tambem como eu consigo escrever um nome na minha área de critério sem ser um nome específico?

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

@VitorNicollas ... sempre que precisar colocar mais informações, utilize comentários ou edite sua pergunta por favor

imagem do gravatar de ConradoConrado ( 2020-05-26 13:45:56 +0200 )editar

2 Respostas

1

respondidas 2020-05-21 20:29:34 +0200

imagem do gravatar de Conrado

updated 2020-05-21 20:30:11 +0200

@VitorNicollas

Segue

Sub FiltrarColunaA()

    Dim oSheet as object
    Dim oDataRange as object
    Dim oFiltre as object
    Dim oFilterField(0) As New com.sun.star.sheet.TableFilterField
    Dim Filtro as String

        oSheet = ThisComponent.Sheets.getByName("Planilha1") rem Nome da sua aba
        oDataRange = oSheet.getCellRangeByName("A1:C6") rem Sua Range que queira filtrar

        oFiltre = oDataRange.createFilterDescriptor(true) rem comando para criar o método filtro
        oDataRange.filter(oFiltre)  rem Limpa os filtros

        rem coloque aqui o termo que queira filtrar
        Filtro = ""

        With oFiltre                                    
            .ContainsHeader = true 'Informa que contém cabeçalho
            .UseRegularExpressions = true 'comando para informar que está utilizando expressões regulares
        End with

        With oFilterField(0)
            .Field = 0 rem Número da coluna que vai aplicar o filtro: A = 0, B = 1 ...
            .IsNumeric = False rem Informa se o filtro é número ou texto (string)
            .Operator = com.sun.star.sheet.FilterOperator.EQUAL rem Operação do filtro
            .StringValue = Filtro rem "*" & Filtro & "*" 'Caso queira filtrar algo específico
        End with    

                'rem Comando para execução do filtro
                oFiltre.setFilterFields(oFilterField()) 
                oDataRange.filter(oFiltre)

End sub

Créditos:

https://api.libreoffice.org/docs/idl/...

https://ask.libreoffice.org/en/questi...

https://ask.libreoffice.org/pt-br/que...

editar assinalar como ofensivo Excluir Link mais
0

respondidas 2020-05-21 20:25:55 +0200

imagem do gravatar de Leandro Vieira
editar assinalar como ofensivo Excluir Link mais

Comentários

Obrigado. vlw

imagem do gravatar de VitorNicollasVitorNicollas ( 2020-05-21 20:27:59 +0200 )editar

Ola @VitorNicollas, @Leandro Vieira, com base na do @Grafeno mencionada acima, compactei para esta:

Sub FiltroAvancado
rem Grafeno – ask.88558
'O############################################################################O
Dim oDoc, oPlanAtiva, oPlan2, oIntervalo, oCriterios, oDestino, oFiltro As Object
oIntervalo = ThisComponent.Sheets.getByName( "Plan2" ).getCellRangeByName( "A1:b9" )  ' Fonte de dados.
oCriterios = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName( "a14:b15" )  'Local do Filtro.
oDestino = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName( "a20" )  ' Local da Resultado.
oFiltro = oCriterios.createFilterDescriptorByObject( oIntervalo )
oFiltro.CopyOutputData = True
oFiltro.OutputPosition = oDestino.CellAddress
oFiltro.ContainsHeader = True
oIntervalo.Filter( oFiltro ) 'Filtrar
End Sub
imagem do gravatar de SchiavinattoSchiavinatto ( 2020-05-22 01:33:58 +0200 )editar

obrigadoo.

imagem do gravatar de VitorNicollasVitorNicollas ( 2020-05-22 11:23:16 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2020-05-21 20:15:56 +0200

Lidas: 24 vezes

Última atualização: 12 horas atrás