Gostaria da ajuda para transformar um macro excel para o libre office

esse é o código que uso pro excel

Sub Consulta_dispositivos()
    Range("B5").Select
    Sheets("DADOS").Range("A2:T1048575").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("B4:T5"), CopyToRange:=Range("B11:Q11"), Unique:= _
        False
    ActiveWindow.SmallScroll Down:=-9
    
End Sub

esse filtro consulta um banco de dados, que é a planilha2, nome DADOS, e na barra de pesquisa ele me traz o resultado parcial referente a pesquisa.

a pesquisa pode ser feita por varios campos, como nome, numero etc… e o resultado ele copia do DADOS e me tras na plan1, onde faço a consulta.

estou tentando rodar isso no libe com o CALC, mas n encontrei nada ainda. poderiam me ajudar

vlw

Boa noite,


Já respondi uma pergunta como esta. Veja:
Atte,

tentei fazer como dito, porém me apareceu um erro, como dito na resposta acima

@willianlattuca,
você disse que o filtro consulta a planilha2 chamada DADOS. Mas seu código adaptado não refletiu isso. Ajuste a linha:

oPlan2 = oDoc.Sheets.getByName( "Planilha2" )

para:

oPlan2 = oDoc.Sheets.getByName( "DADOS" )

e veja se resolve.

Tentei seguir como esta no exemplo que vc fez, mas n consigo aplicar o filtro. com as alterações de celulas ficou assim:

    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( "A2:H40" ) oCriterios = oPlanAtiva.getCellRangeByName( "B3:H3" ) oDestino = oPlanAtiva.getCellRangeByName( "B8" )
    
    oFiltro = oCriterios.createFilterDescriptorByObject( oIntervalo ) oFiltro.CopyOutputData = True oFiltro.OutputPosition = oDestino.CellAddress oFiltro.ContainsHeader = True
    
    'Filtrar' oIntervalo.Filter( oFiltro ) 
    End Sub

porem ao tentar executar me retorna um erro “erro em tempo de execução do BASIC, variavel do objeto nao definida”

e me indica o erro nesta linha:

oFiltro.CopyOutputData = True