Como fazer Macro de Filtro Avançado no Calc?

Bom dia, preciso usar o filtro avançado no calc, por meio de macro, porem nao consegui ainda fazê-la.
Quero que seja o mesmo funcionamento do excel. segue exemplo

Sub Filtrar()
        Sheets("Plan2").Columns("A:F").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("B1:G2"), CopyToRange:=Range("B7:G7"), Unique:=False
End Sub

tem como converter pro calc?
Desde já agradeço.

Bom dia,

Veja se é isso:

Sub FiltroAvancado
Dim oDoc As Object, oPlanAtiva As Object, oPlan2 As Object
Dim oIntervalo As Object, oCriterios As Object
Dim oDestino As Object, oFiltro As Object

   oDoc = ThisComponent
   oPlanAtiva = oDoc.CurrentController.ActiveSheet
   oPlan2 = oDoc.Sheets.getByName( "Planilha2" )
   
   oIntervalo = oPlan2.getCellRangeByName( "A1:F1000000" )
   oCriterios = oPlanAtiva.getCellRangeByName( "B1:G2" )
   oDestino = oPlanAtiva.getCellRangeByName( "B7" )
   
   oFiltro = oCriterios.createFilterDescriptorByObject( oIntervalo )
   oFiltro.CopyOutputData = True
   oFiltro.OutputPosition = oDestino.CellAddress
   oFiltro.ContainsHeader = True
   
   'Filtrar'
   oIntervalo.Filter( oFiltro )
End Sub

Atte,

1 Like

Funcionou muito bem, só que la no excel tem aquela opção “Unique:=False”(que retornas os valores ao pesquisar só uma letra por exemplo), como fazer esta opcao no calc???

Tente o seguinte: vá em Ferramentas >> Opções >> LibreOffice Calc - Calcular >> (Desmarque) "Critérios de pesquisa = e <> devem ser aplicados ao conteúdo integral das células"

bom dia! aproveitando o gancho, sabem como converter para o Calc a macro do Excel abaixo?

'RetirarFiltros
    On Error GoTo erro 'Evitar erro de filtro
        ActiveSheet.ShowAllData 'Retirar todos os filtros
erro: 'Completa a ação de evitar erro

Deu certo Grafeno, Muito Obrigado!!!

Olá,
Gostaria de um auxilio para rodar esta macro. Percebi que a copia dos dados filtrados não é executado se o destino não estiver na célula “A1”.

oDestino = oPlanAtiva.getCellRangeByName( “A1” )

O exemplo acima com o endereço de destino para a celula “B7” não funciona.

Penso que o autor seria @grafeno.