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

#1 30. 9. 2009 16:13:55

MF
Člen
Registrace: 24. 1. 2006
Příspěvků: 20

kontingenčnú tabuľku spustiť automat.

prosím vás je možné niekde nastaviť aby sa kontingenčné tabuľky spustili vždy pri otvorení súboru, alebo je to treba vždy spúštať a nastavovať, mám ich šesť na liste a je to zdĺhavé pri každom otvorení súboru to isté nastaviť a spuštať.
ďakujem

Editoval MF (30. 9. 2009 16:14:25)

Offline

#2 1. 10. 2009 06:19:51

Ondra.kl
Člen
Registrace: 30. 9. 2008
Příspěvků: 933

Re: kontingenčnú tabuľku spustiť automat.

není mi jasné co myslíte spuštěním kontingenční tabulky ... jednou ji vytvořím a je, když změním data tak ji dám obnovit (pravé tl. na ní + z měnu obnovit) ... takže co vlastně děláte, co chcete a co vám nejde?

Offline

#3 1. 10. 2009 07:10:14

MF
Člen
Registrace: 24. 1. 2006
Příspěvků: 20

Re: kontingenčnú tabuľku spustiť automat.

ano to máte úplnu pravdu, tlačítkom obnoviť sa obnoví, ale bez nastavených filtrov a výstupoch v stranových poliach, a práve tieto nastavenia by som rad uchoval aj po uložení a novom načítaní súboru, tak aby som po odkliknuti "obnoviť" nemusel filtrovať nanovo, teda ak by  sa to nejako dalo,
ďakujem

Offline

#4 1. 10. 2009 20:03:53

Ondra.kl
Člen
Registrace: 30. 9. 2008
Příspěvků: 933

Re: kontingenčnú tabuľku spustiť automat.

v GO oo 3.1.1. se pamatuje filtr celé tabulky i filtr v poli řádků.

Offline

#5 2. 10. 2009 08:29:26

MF
Člen
Registrace: 24. 1. 2006
Příspěvků: 20

Re: kontingenčnú tabuľku spustiť automat.

nie nepamätá, iba ukazuje po otvorení súboru pôvodnú hodnotu, ale klik "obnoviť" nastaví všetko na prednastavené hodnoty:
filtre- nič
stanové polia-všetko
a s týmto defla nastavením asi nepohnem
aj tak ďakujem, GO vyzerá celkom sympaticky

Offline

#6 2. 10. 2009 09:37:22

Ondra.kl
Člen
Registrace: 30. 9. 2008
Příspěvků: 933

Re: kontingenčnú tabuľku spustiť automat.

tak v OOo 3.1.1 cz odsud z portálu se taky obojí pamatuje ... jakou máte verzi OOo?

Offline

#7 2. 10. 2009 10:56:42

MF
Člen
Registrace: 24. 1. 2006
Příspěvků: 20

Re: kontingenčnú tabuľku spustiť automat.

dnes stiahnuté a inštalované oo3.1.1 build 9420, 2009.09.15
odkaz vo vlákne

    *  » Calc *  » Přetažení buňky s poznámkouhttp://www.go-oo.org/download/

Offline

#8 4. 11. 2009 12:22:55

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

Re: kontingenčnú tabuľku spustiť automat.

MF napsal(a)

prosím vás je možné niekde nastaviť aby sa kontingenčné tabuľky spustili vždy pri otvorení súboru, alebo je to treba vždy spúštať a nastavovať, mám ich šesť na liste a je to zdĺhavé pri každom otvorení súboru to isté nastaviť a spuštať.
ďakujem

Je na to nástavba: DataPilot Tools (nebo tak nějak se jmenuje). Jedním tlačítkem aktualizujete veškeré kontingenční tabulky v celém dokumentu (na všech listech)


LibreOffice 5.2.2.2

Offline

#9 18. 5. 2010 12:03:40

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 146

Re: kontingenčnú tabuľku spustiť automat.

tak sem prohlédl celý širý internet a našel takovéto krásné makro zde
Trochu jsem jej doplnil o "hardcalculate..."
...aktualizuje všechny pivottable (kont. tab.) v dokumentu.
Mě funguje akorát to "refresh_DBRanges_And_Pilots", u těch ostatních dvou mi to vyhodí jakousi chybu,ale to je mi jedno - to jedno funkční makro aktualizuje KT! smile

    Sub refresh_DBRanges_And_Pilots
    rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
  rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:CalculateHard", "", 0, Array())
    REM disable auto-calculation:
       bAutoCalc = thisComponent.IsAutomaticCalculationEnabled
       thisComponent.enableAutomaticCalculation(False)
       oDBRangesEnum = thisComponent.DatabaseRanges.createEnumeration()
       refresh_Enumeration(oDBRangesEnum)
       oSheetsEnum = thisComponent.Sheets.createEnumeration()
       refresh_All_DataPilots(oSheetsEnum)
    REM reset auto-calculation to previous state:
       thisComponent.enableAutomaticCalculation(bAutoCalc)
       rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:CalculateHard", "", 0, Array())
    End Sub

    Sub refresh_All_DataPilots(oSheetsEnum)
    REM Bug: Disregards pilots created from datasource
       while oSheetsEnum.hasMoreElements()
          oSheet = oSheetsEnum.nextElement()
          oDPEnum = oSheet.DataPilotTables.createEnumeration()
          refresh_Enumeration(oDPEnum)
       wend
    End Sub

    Sub refresh_Enumeration(oEnum)
       while oEnum.hasMoreElements()
          oNext = oEnum.nextElement()
          oNext.refresh()
       wend
    End Sub

OO 3.2.1  WIn 8 64bit  16GB RAM

Offline

#10 20. 8. 2010 07:56:25

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 146

Re: kontingenčnú tabuľku spustiť automat.

kdybyste někdo věděl o nějakém jiném makru , které aktualizuje KT (určitou KT nebo všechny naráz), než to co jsem tu vložil,tak dejte pls. vědět. Todle makro totiž někdy trvá 5 vteřin než se provede a to mě už někdy pěkne frustruje, protože ho používám často. Takové ideální makro by bylo takové aby pracovalo jako když normálně kliknu na KT pravým čudlem myši a dám "obnovit" a je to hnedka během sekundy(pokud není zdrojových dat nějak moc).

....to je mi ale stejně divné, že ty kódy nebo jak se tomu říká, jsou takové trochu tajné-vždycky se o tom, jak napsat makro, dozvím někde z diskuze...ale myslel bych si,že by to mohlo být k dispozici i na stránkách výrobce, a ještě k tomu když je to OPENOFFICE - tak tuplem bych čekal že budou všechna možná makra zveřejněná....

Editoval dech (26. 8. 2010 15:46:32)


OO 3.2.1  WIn 8 64bit  16GB RAM

Offline

#11 26. 8. 2010 18:40:33

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 146

Re: kontingenčnú tabuľku spustiť automat.

našel jsem další makro jak aktualizovat KT - je založený na tom, že to makro umístí kurzor do míst kde je KT(uživatel musí definovat-makro samo nepozná kde je KT:) ) a tam spustí nějakou UNO věc... (a opravdu fugnguje)

sub obnovitKT_na_bunce_C29
rem toto makro obnovuje KT tak ze to makro samo umisti kurzor na dane misto a tam kde je kurzor tam se aktualizuje KT
    nazev_listu = ThisComponent.getSheets().getByName("KT")
    kurzor = ThisComponent.getCurrentController()
    souradnice = nazev_listu.getCellByPosition(2,30)

    kurzor.Select(souradnice)
    
    oznacena_bunka = ThisComponent.CurrentController.Frame
        dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
        dispatcher.executeDispatch(oznacena_bunka, ".uno:RecalcPivotTable", "", 0, Array()) 'mozna to tady mam spatne-mozna to co rika te "funkci RecalcPivotTable" kde je prave kurzor neni "oznacena_bunka" ale "Array".
end sub

a já bych z toho chtěl vynechat to přesouvání kurzoru a rovnu říct tomu "dispatcheru" že to má aktualizovat na bunce C29, hlavně proto,protože to přesouvání kurzoru mě přesune na ten list kde se toto děje-což nechci-ten list je jenom pro vzorce.vubec do nej nechcu koukat,a když ho skryju tak je to celé pošahané... :-(
Už jsem do toho posledního řádku zkoušel místo "oznacena_bunka" dát souřadnice "(2,29)" nebo "souradnice" aby si to vzalo souřadnice z na začátku definované proměnné "souradnice"
...a háže to např tuto hlášku:
chybac.png

takže nevíte někdo jak tomu dispatcherovi říct aby aktualizoval danou bunku bez toho šmrdolení s tím kurzorem?diky
Toto makro je výborné v tom, že to aktualizuje ty KT IHNED-žádné vteřinové čekání jako u toho makra předtím.

Editoval dech (26. 8. 2010 20:17:11)


OO 3.2.1  WIn 8 64bit  16GB RAM

Offline

#12 9. 10. 2010 18:18:06

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 146

Re: kontingenčnú tabuľku spustiť automat.

takže jsem konečně přišel na to jak pěkně aktualizovat kontingenční tabulku pomocí jednoduchého a rychlého makra:

Sub aktualizace_KT

   list = thisComponent.Sheets.getByName("list1")   'bude se aktualizovat jen na listě1
   KT = list.DataPilotTables.getByIndex(0)  'bude se aktualizovat jen KT ktera byla vytvorena jako prvni. Pro aktualizaci druhé vytvořené KT dejte (1) atd.  
   KT.refresh()

end sub

Ovšem stalo se mi další trápení, na jehož řešení jsem tedka přišel. Problém byl ten, že se mi obnovovali jenom některé KT. No a zjistil jsem, že se tento problém týká těch kontingenčních tabulek, které jsou tzv. "zkopírované" - dáte na již existující KT pravý čudl myši-začátek-výsledek do-zadáte nějakou jinou bunku než právě nastavenou-OK-  objeví se nová KT na nově zadané souřadnici a toto je právě ta "zkopírovaná" KT-což je pro toto makro špatné. Takže aby to makro fungovalo tak ta KT musí být vytvořená od základu: data-průvodce daty-začátek...


OO 3.2.1  WIn 8 64bit  16GB RAM

Offline

#13 18. 3. 2016 11:22:13

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

Re: kontingenčnú tabuľku spustiť automat.

Po letech si kopíruji výše uvedené makro a v LO 5.0.2.2 už funguje správně - tzn. refresh působí sice asi opravdu jen na tu "mateční" KT ale už je to tak zavedené že se díky obnově té mateční obnoví i ty "dceřiné" - zkopírované. Takže OK.


LibreOffice 5.2.2.2

Offline

#14 18. 3. 2016 11:33:13

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 146

Re: kontingenčnú tabuľku spustiť automat.

wooow :-) ...to je let tyjo...tak to čumím že to vubec funguje...


OO 3.2.1  WIn 8 64bit  16GB RAM

Offline

Zápatí