Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 12. 4. 2011 10:38:01

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 588

kontingenční tabulka filtr - VYŘEŠENO

Dobrý den

nevíte prosím o možnosti jak měnit nastavení filtru kontingenční tabulky nějak automaticky - např. makrem. Moje úloha je ta, že potřebuji měnit jedno kriterium filtru v kontingenční tabulce a vždy ji vytisknout do pdf. Těch položek kriteria je zhruba 50. Tedy 50 změn a výtisků. Ideální by bylo, kdyby se nová položka toho kriteria posunula vždy o jedno místo v seznamu a zároveň by začal nabíhat tisk a položka kriteria by se umístila do schránky pro vložení názvu souboru :-) Chci toho dost, že. Ten tisk a uložení do schránky už nějak zvládám, ale ta změna kontingenční tabulky makrem ...


LibreOffice 6.2.

Offline

#2 12. 4. 2011 15:38:57

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: kontingenční tabulka filtr - VYŘEŠENO

Je to bída,
KT skoro nikdo nepoužívá a nezná, navíc ovládání makrem je věc prakticky neznámá a v češtině nepopsaná. Z OO.org alespoň několik odkazů, třeba tam něco o filtrování a změně filtrů najdete. Bohužel pouze anglicky.


http://user.services.openoffice.org/en/ … 20&t=33542
http://user.services.openoffice.org/en/ … 20&t=13598

http://wiki.services.openoffice.org/wik … lot_Tables


KT mě také zajímají, ale k makrům jsem se zatím nedostal.
Jakmile budete moci ovládat filtr makrem tak tisk a uložení do pdf není tak složité.

PS. rada - stáhněte si do OO.o  Translator

na studium maker stačí
;o)

Editoval sedlacekdan (12. 4. 2011 15:39:37)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 13. 4. 2011 08:28:15

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 588

Re: kontingenční tabulka filtr - VYŘEŠENO

Děkuji velice. Ten první odkaz je na makro, které skutečně vytváří DataPilot (KT) včetně filtru - funguje to bezvadně a není zas tak složité na mírnou úpravu (společně s malým prostudováním 3. odkazu lze vytvořit KT v jakémkoli tvaru). Jediné co jsem však ještě nezjistil je, zda lze fitrovat aniž by se překopávala celá tabulka. Tedy makro jen na filtr bez vytváření KT. Dokáže mi někdo zkušenější říci, které ty řádky mohu "vyhodit" abych pouze filtroval, s tím, že na listu bude vždy jen jedna KT? Nepochopil jsem co to je "jméno tabulky"

Tak jsem se s tím popral
Takže makro na filtrování KT může vypadat např takto:
(ačkoli stále nevím o většině příkazů co znamenají :-)

Sub filtr_KT
dim jmeno as string
Dim FilterFields(0) as New com.sun.star.sheet.TableFilterField
oController = ThisComponent.CurrentController
oSheetObj = oController.ActiveSheet
DataCellRange = oSheetObj.getCellRangeByName("A1:D10")
RangeAddress = DataCellRange.RangeAddress
Tables = oSheetObj.DataPilotTables()   'Tables has all the DataPilot Tables in the Active Sheet

Table = Tables.getByName("NewDataPilot")
wait 2000
jmeno =  oSheetObj.getCellrangeByName("A13").String
FDes = Table.getFilterDescriptor
FilterFields(0).Field = 0
FilterFields(0).Operator = com.sun.star.sheet.FilterOperator.EQUAL
FilterFields(0).IsNumeric = False
FilterFields(0).StringValue = jmeno

FDes.FilterFields = FilterFields

End sub

Editoval ludviktrnka (13. 4. 2011 08:56:13)


LibreOffice 6.2.

Offline

#4 13. 4. 2011 09:06:46

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 588

Re: kontingenční tabulka filtr - VYŘEŠENO

Ukazuje se to čeho jsem se obával, filtr funguje pouze na KT vytvořenou tím makrem zde:

http://user.services.openoffice.org/en/ … 42#p155511

Nevím jak načíst "nějakou" KT na aktuálním listu


LibreOffice 6.2.

Offline

#5 13. 4. 2011 09:14:22

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 588

Re: kontingenční tabulka filtr - VYŘEŠENO

Sám tomu něvěřím, ale vypadá to, že univerzální jednokriteriální filtr na kontingeční tabulku je zde:

End sub

Sub filtr_KT
dim jmeno as string
Dim FilterFields(0) as New com.sun.star.sheet.TableFilterField
oController = ThisComponent.CurrentController
oSheetObj = oController.ActiveSheet
Tables = oSheetObj.DataPilotTables()   'Tables has all the DataPilot Tables in the Active Sheet

jmeno =  oSheetObj.getCellrangeByName("A13").String 'tady mám nějakou proměnou, dle níž fitruji
FDes = Tables(0).getFilterDescriptor
FilterFields(0).Field = 0
FilterFields(0).Operator = com.sun.star.sheet.FilterOperator.EQUAL
FilterFields(0).IsNumeric = False
FilterFields(0).StringValue = jmeno

FDes.FilterFields = FilterFields

End sub

LibreOffice 6.2.

Offline

#6 13. 4. 2011 10:05:34

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 588

Re: kontingenční tabulka filtr - VYŘEŠENO

A snad končená podoba s vícekrieriálním filtrem je zde:

Sub filtr_KT
dim jmeno as string
dim obdobi as integer
Dim FilterFields(1) as New com.sun.star.sheet.TableFilterField
oController = ThisComponent.CurrentController
oSheetObj = oController.ActiveSheet
Tables = oSheetObj.DataPilotTables()   'Tables has all the DataPilot Tables in the Active Sheet

jmeno =  oSheetObj.getCellrangeByName("A20").String 'tady mám nějakou proměnou, dle níž fitruji
FDes = Tables(0).getFilterDescriptor
FilterFields(0).Field = 3
FilterFields(0).Operator = com.sun.star.sheet.FilterOperator.EQUAL
FilterFields(0).IsNumeric = False
FilterFields(0).StringValue = jmeno

obdobi =  oSheetObj.getCellrangeByName("A19").Value 'a tady je další kriterium s logickym AND
FilterFields(1).Field = 2
FilterFields(1).Operator = com.sun.star.sheet.FilterOperator.EQUAL
FilterFields(1).IsNumeric = True
FilterFields(1).NumericValue = obdobi
FilterFields(1).Connection = com.sun.star.sheet.FilterConnection.AND

FDes.FilterFields = FilterFields

End sub

LibreOffice 6.2.

Offline

Zápatí