Como executar uma filtragem ao abrir o arquivo

Preciso executar uma filtragem, relativamente simples numa coluna (F)da planilha2 onde as células que contiverem o mesmo conteúdo da planilha1, na célula A1, seja copiadas/apresentadas as linhas das mesmas para a planilha1 ou para uma janela de apresentação(uma macro mesmo).

Isto é fácil de resolver com o filtro padrão e marcar para copiar para a devida planilha, mas a macro automática não grava o procedimento… Pensei no auto filtro também, mas será uma repetição de dados com a fórmula ‘=’, mas é uma alterntiva.

É que estou numa função com vários compromissos listados para o dia atual (fazer durante o dia), e futuros (agendados) e passados sem resolver. E de vez em quando preciso dar uma visualizada para não esquecer. Nada melhor que ao abrir o arquivo os dados sejam filtrados e apresentados.

Boa tarde,


Uma macro com o filtro padrão, para o seu caso, ficaria mais ou menos assim:

Aplica o filtro padrão na 3ª coluna do intervalo A1:H9 em Planilha2, a partir do critério localizado na célula A1 em Planilha1, e cola o resultado a partir de C2 em Planilha1. Para esta macro o critério e o campo (coluna) filtrado devem conter números ou datas.

Sub FiltroPadrao
Dim oDoc As Object, oPlan1 As Object, oPlan2 As Object
Dim vCriterio As Double, oDestino As Object
Dim oIntervalo As Object, oFiltro As Object
Dim mCamposFiltro(0) As New com.sun.star.sheet.TableFilterField

   oDoc = ThisComponent
   oPlan1 = oDoc.Sheets.getByName( "Planilha1" )
   oPlan2 = oDoc.Sheets.getByName( "Planilha2" )
   
   oIntervalo = oPlan2.getCellRangeByName( "A1:H9" )
   vCriterio = oPlan1.getCellRangeByName( "A1" ).Value
   oDestino = oPlan1.getCellRangeByName( "C2" ).CellAddress
  
   'Definir campo/criterios filtragem'
   With mCamposFiltro(0)
      .Field = 2 '3ª coluna do intervalo. Coloque 0 para a 1ª.'
      .Operator = com.sun.star.sheet.FilterOperator.EQUAL
      .IsNumeric = True
      .NumericValue = vCriterio
   End With

   'Descrição do filtro'
   oFiltro = oIntervalo.createFilterDescriptor( True )
   With oFiltro
      .ContainsHeader = True
      .CopyOutputData = True
      .OutputPosition = oDestino
      .FilterFields = mCamposFiltro
   End With
   
   'Aplicar o filtro padrão'
   oIntervalo.Filter( oFiltro )
End Sub

Para executar esta macro ao abrir o arquivo, associe ela ao evento *Ao abrir documento, através do menu Ferramentas > Personalizar… > aba Eventos > evento 'Ao abrir documento’.


Atte,

Brilhante, parabéns! Era exatamente o que eu queria. Abraços meu caro.