Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


Olá!
Segue um exemplo para você adaptar.
'
********************************************************************************************************************
' MACRO DE SELEÇÃO, SELECIONA TODAS AS LINHAS DA COLUNA "E" COM A STRING
"CHINA"
' E COPIA PARA UMA NOVA PLANILHA, MANTENDO A PLANILHA ORIGINAL.
'
********************************************************************************************************************
Sub MyFilter()
  Dim oSheet       ' Sheet that will contain the filter.
  Dim oRange       ' O range  that will aplicar the filter.
  Dim oFilterDesc  ' Filter descriptor.
  Dim oFields(0) As New com.sun.star.sheet.TableFilterField
  Dim x As New com.sun.star.table.CellAddress
 ' estou aplicando o filtro  na segunda planilha, a contagem inicia do zero
- que é a primeira.
   oSheet = ThisComponent.getSheets().getByIndex(1)
   oRange = oSheet.getCellRangeByName("A1:X1642")

  REM If argument is True, creates an empty filter
  REM descriptor. If argument is False, create a
  REM descriptor with the previous settings.
  oFilterDesc = oSheet.createFilterDescriptor(True)

  With oFields(0)
    REM I could use the Connection property to indicate
    REM how to connect to the previous field. This is
    REM the first field so this is not required.
    '.Connection = com.sun.star.sheet.FilterConnection.AND
    '.Connection = com.sun.star.sheet.FilterConnection.OR

    REM The Field property is the zero based column
    REM number to filter. If you have the cell, you
    REM can use .Field = oCell.CellAddress.Column.
    .Field = 4           ' SELECIONA a coluna E

    REM Compare using a numeric or a string?
    .IsNumeric = False

    REM The NumericValue property is used
    REM because .IsNumeric = True from above.
    REM .NumericValue = 80

    REM If IsNumeric was False, then the
    REM StringValue property would be used.
   ' .StringValue = "T(" & """China""" & ")"              'T("China")
     .StringValue = "China"
   '  msgbox oFields(0).Stringvalue

    REM Valid operators include EMPTY, NOT_EMPTY, EQUAL,
    REM NOT_EQUAL, GREATER, GREATER_EQUAL, LESS,
    REM LESS_EQUAL, TOP_VALUES, TOP_PERCENT,
    REM BOTTOM_VALUES, and BOTTOM_PERCENT
    .Operator = com.sun.star.sheet.FilterOperator.EQUAL
  End With

  REM The filter descriptor supports the following
  REM properties: IsCaseSensitive, SkipDuplicates,
  REM UseRegularExpressions,
  REM SaveOutputPosition, Orientation, ContainsHeader,
  REM CopyOutputData, OutputPosition, and MaxFieldCount

  oFilterDesc.setFilterFields(oFields())
  oFilterDesc.ContainsHeader = True
  oFilterDesc.UseRegularExpressions = True
  oFilterDesc.CopyOutputData = True
  x.Sheet = 3
  x.Column = 0
  x.Row = 0
  oFilterDesc.OutputPosition = x
  oRange.filter(oFilterDesc)

End Sub


Abaixo, informação adicional:

REM PARA REMOVER UM FILTRO

Sub RemoveSheetFilter()
  Dim oSheet          ' Sheet to filter.
  Dim oFilterDesc     ' Filter descriptor.

  oSheet = ThisComponent.getSheets().getByIndex(1)
  oFilterDesc = oSheet.createFilterDescriptor(True)
  oSheet.filter(oFilterDesc)
End Sub

Boa sorte!


Em 12 de julho de 2013 09:01, Rogerio Luz Coelho
<luz.rogerio@gmail.com>escreveu:

Coloque o macro no corpo da mensagem ou melhor ainda use um lugar onde
podemos baixá-lo (Google Drive, Dropbox).

Também nos diga qual seu sistema operacional e versão do LibreOffice. E a
extensão do arquivo que quer usar (.ods , .doc, etc)

Nos descreva (passo a passo de preferência) o que DESEJA realizar e depois
nos diga o que já conseguiu.

Abraços

R.


Em 11 de julho de 2013 08:15, Contabilidade - ABJJM <
contabilidade_mjjm@terra.com.br> escreveu:

Senhores,Apos algumas leituras em materiais apresentados, aproveitei o
          proprio exemplo do Guia Calc Cap. 13, que e justamente a macro
          que necessito, porem ao aplica-la em minha planilha nao estou
          obtendo o resultado desejavel, vejamos:Ela executa ate certo
ponto corretamente, ou seja ela filtra
          os dados desejados porem nao copia os dados filtrados para uma
          outra area que e o meu desejo.Tenho uma planilha onde:-os dados
a serem filtrados estao "A1:w1350" (area romeda"DADOS_DE_FILTRO")-
criterios de filtro"A1352:w1353" (area romeda"CRITERIOS_DE_FILTRO")-
copiar
resultado para "A1360" (area nomeda"DADOS_FILTRADOS")Alguem poderia me
ajudar ou encaminhar para algum Forum, pois
          sou novo em programacao e nao estou conseguindo resolver o
          problema, abaixo segue a Macro para apreciacao.Paulo
FreitasSubUsandoFiltroAvancado()DimoSheet'Uma
planilha
                de um documento Calc.DimoRanges'Propriedades
                NamedRanges.DimoCritRange'Intervalo
                que contm o critrios de filtragem.DimoDataRange'intervalo
                que contm os dados a serem
filtrados.DimoFiltDesc'Definies
                do filtro.REM
Intervalo
                que contm os

critriosoSheet=ThisComponent.getSheets().getByIndex(1)oRanges=ThisComponent.NamedRangesoRange=oRanges.getByName("CRITERIO_DE_FILTRO")oCritRange=oRange.getReferredCells()REM
Pode-se tambm obter o
                intervalo contendoREM o critrio de filtragem a
                partir de um nome de intervalo.REM oRanges =
                ThisComponent.NamedRangesREM oRange =
                oRanges.getByName("MediaMenor80")REM oCritRange =
                oRange.getReferredCells()REM Os dados que sero

filtradosoSheet=ThisComponent.getSheets().getByIndex(1)oDataRange=oSheet.getCellRangeByName("DADOS_DE_FILTRO")oFiltDesc=oCritRange.createFilterDescriptorByObject(oDataRange)oDataRange.filter(oFiltDesc)REM
Copia o resultado para um
                local diferente do local
original.oFiltDesc.CopyOutputData=TrueREM Coluna B, linha 4 (lembre-se,
                comea em 0)REM Cria CellAddress e configura
                isto para a planilha3,DimxAs


Newcom.sun.star.table.CellAddressx.Sheet=1x.Column=0x.Row=1355oFiltDesc.OutputPosition=xEnd
                Sub<!--
                @page { margin: 2cm }
                P { margin-bottom: 0.21cm }
        -->Paulo Freitas




--
Você está recebendo e-mails da lista usuarios@pt-br.libreoffice.org
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para usuarios+unsubscribe@pt-br.libreoffice.org
# Cancelar sua assinatura: mande e-mail vazio para:
  usuarios+unsubscribe@pt-br.libreoffice.org
# Arquivo de mensagens:
http://listarchives.libreoffice.org/pt-br/usuarios/



--
Você está recebendo e-mails da lista usuarios@pt-br.libreoffice.org
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para usuarios+unsubscribe@pt-br.libreoffice.org
# Cancelar sua assinatura: mande e-mail vazio para:
  usuarios+unsubscribe@pt-br.libreoffice.org
# Arquivo de mensagens:
http://listarchives.libreoffice.org/pt-br/usuarios/



-- 
Você está recebendo e-mails da lista usuarios@pt-br.libreoffice.org
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para usuarios+unsubscribe@pt-br.libreoffice.org
# Cancelar sua assinatura: mande e-mail vazio para:
  usuarios+unsubscribe@pt-br.libreoffice.org
# Arquivo de mensagens: http://listarchives.libreoffice.org/pt-br/usuarios/

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.