Como limpar o autofiltro no Calc utilizando LibO Basic?

Preciso limpar o autofiltro utilizado em pasta do Calc utilizando macros do LibreOffice Basic. Cheguei à seguinte proposta:

sub LimpaAutoFiltro
  Dim oSheet          ' Sheet to filter.
  Dim oFilterDesc     ' Filter descriptor.
  oSheet = ThisComponent.getSheets().getByIndex(0)
  oFilterDesc = oSheet.createFilterDescriptor(True)
  oSheet.filter(oFilterDesc)
end sub

Ocorre que, após o uso do código supra, o LibO Calc continua com o autofiltro ligado, como se estivesse operando na Coluna F [mero descritivo] e com a aplicação dos filtros ali realizados, ainda que tenha feito uma “limpeza” no resultado, isto é, de fato não está aplicado o autofiltro [após o código supra].

Preciso de uma solução mais limpa, que dê o efeito de ZERAR os autofiltros. Alguém tem uma ideia?

Ola @rebr, usei o gravador de macro, ela alterna entre ligado e desligado.

sub AutoFiltroSN
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$D$1"   REM Uma célula da área a incluir ou excluir o Autofiltro.
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
dispatcher.executeDispatch(document, ".uno:DataFilterAutoFilter", "", 0, Array())
end sub

ATENÇÂO:: Caso queira dar mais detalhes a sua pergunta, use Descrição da imagem na pergunta ou Descrição da imagem abaixo. Grato.

Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha Descrição da imagem a esquerda da resposta, para finalizar a pergunta.

Obrigado pelo norte! Não tinha utilizado o gravador de macros porque estou entrando agora no mundo do Basic (saindo do VBA do Excel) e quero desenvolver códigos mais limpos sem esse tal de dispatcher que o gravador usa.

Para efeitos do que eu estava precisando pra minha planilha, precisava apenas manter a possibilidade de aplicação de autofiltros para quem quer que use a planilha tenha a facilidade sem precisar entender o que é “autofiltro” e não precisar ficar procurando isso nos menus.

Então para fazer o efeito de que preciso, me usando da tua ideia, o código ficou assim:

sub AutoFiltroSN
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dispatcher.executeDispatch(document, ".uno:DataFilterAutoFilter", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:DataFilterAutoFilter", "", 0, Array())
end sub

Ok desta maneira, o cursor deve estar na área da tabela a aplicar o Autofiltro.e retire uma linha duplicada…

.

Aqui links para material sobre Basic: Documentação para Macros Basic - Calc - Referencia - #11 by ohallot

A linha duplicada é, na verdade, para DESABILITAR o Autofiltro e depois REabilitar. :wink:

Ok, perfeito, limpa e reativa o Autofiltro.