OK!Obrigadoa todos que se
empenharam, problema resolvido.Paulo FreitasEm 13/07/2013 09:06, sp24horas escreveu:
Ol!Segue um exemplo para vocadaptar.
'
********************************************************************************************************************
' MACRO DE SELEO, 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 rangethat 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 filtrona segunda planilha, a
contagem inicia do zero - quea 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, informao 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 Coelholuz.rogerio@gmail.comescreveu:Coloque o
macro no corpo da mensagem ou melhor ainda use um lugar ondepodemos baix-lo (Google
Drive, Dropbox).Tambm nos diga qual seu sistema operacional e verso do
LibreOffice. E aextenso do arquivo que quer usar (.ods , .doc, etc)Nos descreva (passo
a passo de preferncia) o que DESEJA
realizar e depoisnos diga o que jconseguiu.AbraosR.Em 11 de julho de 2013 08:15,
Contabilidade - ABJJMcontabilidade_mjjm@terra.com.brescreveu:Senhores,Apos algumas leituras em
materiais
apresentados, aproveitei oproprio exemplo do Guia Calc Cap. 13, que
e justamente a macroque necessito, porem ao aplica-la em
minha planilha nao estouobtendo o resultado desejavel,
vejamos:Ela executa ate certoponto corretamente, ou seja ela filtraos dados
desejados porem nao copia os
dados filtrados para umaoutra area que e o meu desejo.Tenho uma
planilha onde:-os dadosa serem filtrados estao "A1:w1350" (area
romeda"DADOS_DE_FILTRO")-criterios de filtro"A1352:w1353" (area
romeda"CRITERIOS_DE_FILTRO")- copiarresultado para "A1360" (area
nomeda"DADOS_FILTRADOS")Alguem poderia meajudar ou encaminhar para algum Forum,
poissou novo em programacao e nao estou
conseguindo resolver oproblema, abaixo segue a Macro para
apreciacao.PauloFreitasSubUsandoFiltroAvancado()DimoSheet'Umaplanilhade um documento
Calc.DimoRanges'PropriedadesNamedRanges.DimoCritRange'Intervaloque contm o critrios
de
filtragem.DimoDataRange'intervaloque contm os dados a serem
filtrados.DimoFiltDesc'Definiesdo filtro.REMIntervaloque contm
oscritriosoSheet=ThisComponent.getSheets().getByIndex(1)oRanges=ThisComponent.NamedRangesoRange=oRanges.getByName("CRITERIO_DE_FILTRO")oCritRange=oRange.getReferredCells()REMPode-se
tambm obter ointervalo contendoREM o critrio de
filtragem apartir de um nome de intervalo.REM
oRanges =ThisComponent.NamedRangesREM oRange
=oRanges.getByName("MediaMenor80")REM oCritRange =oRange.getReferredCells()REM Os
dados que
serofiltradosoSheet=ThisComponent.getSheets().getByIndex(1)oDataRange=oSheet.getCellRangeByName("DADOS_DE_FILTRO")oFiltDesc=oCritRange.createFilterDescriptorByObject(oDataRange)oDataRange.filter(oFiltDesc)REMCopia
o resultado para umlocal diferente do localoriginal.oFiltDesc.CopyOutputData=TrueREM Coluna B,
linha 4 (lembre-se,comea em 0)REM Cria CellAddress e
configuraisto para a
planilha3,DimxAsNewcom.sun.star.table.CellAddressx.Sheet=1x.Column=0x.Row=1355oFiltDesc.OutputPosition=xEndSub!--@page
{ margin: 2cm }P { margin-bottom: 0.21cm }--Paulo Freitas--Vocestrecebendo e-mails da
listausuarios@pt-br.libreoffice.org# Informaes sobre os comandos disponveis (em
ingls):mande e-mail vazio parausuarios+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/--Vocestrecebendo e-mails da
listausuarios@pt-br.libreoffice.org# Informaes sobre os comandos disponveis (em ingls):mande e-mail
vazio parausuarios+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.