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

#1 8. 4. 2021 09:10:47

harbi
Člen
Registrace: 8. 4. 2021
Příspěvků: 5

Automatické nastavení sloupců na klávesu.

Zdravím,
Chtěl bych se zeptat. Šlo by na určitou klávesu, aby sloupce měli toto podmíněné formátování automaticky? celý sloupec C - barevná škála, sloupec D - barevná škála, sloupec E - datový pruh, sloupec F - datový pruh, sloupec g - barevná škála, sloupec H - barevná škála, sloupec I - barevná škála, sloupec M datový pruh, sloupec N - datový pruh, Sloupec O - datový pruh, sloupec P - datový pruh, sloupec R - datový pruh.

Děkuji za pomoc.

Offline

#2 8. 4. 2021 10:40:46

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 368

Re: Automatické nastavení sloupců na klávesu.

To by možná šlo i přes Záznam makra a pak si přiřadit klávesové zkratky k těm makrům. Pokud si vystačíte s klikáním v menu a nepotřebujete do těch podmínek dát konkrétní vzorce.

Offline

#3 8. 4. 2021 11:57:20

harbi
Člen
Registrace: 8. 4. 2021
Příspěvků: 5

Re: Automatické nastavení sloupců na klávesu.

Přesně tak, do podmínek nepotřebuji dát konkrétní vzorce. Jde mi jen o to aby po stisknutí klávesy, měl každý vyznačený sloupec tyto své podmínky, jak jsou v základu nastavené. Zkoušel jsem to nahrát pomocí záznamu makra ale bezúspěšně.

Offline

#4 8. 4. 2021 12:55:16

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 368

Re: Automatické nastavení sloupců na klávesu.

Ten Záznam makra má v tomto případě v sobě chybu kterou občas to zaznamenávání makra dělá - přidá slůvko rem značící komentář i před příkazy. Otevřete si to zaznamenané makro a smažte slůvka rem před příkazy dispatcher.execute(...) :-). Pak by vá to mělo chodit.


Ovšem nevím jestli vám ty prázdné podmínky k něčemu budou.
1) Napadá mě že možná něco chcete urychlit. Podle mých zkušeností tím nic neurychlíte. Sice je tam budete mít, ale když do nich pak ručně nebo makrem budete zadávat hodnoty, tak to udělá to, že vám to nepřidá jen hodnoty, ale smaže ty prázdné podmínky a dá tam jako nové ty s hodnotami. Takže tím nic neurychlíte a jen budete dělat o půl práce navíc.
2) A pro dobrý přehled myslím dobře slouží menu Formát/ Podmíněný/ Spravovat

Offline

#5 8. 4. 2021 14:40:57

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Automatické nastavení sloupců na klávesu.

harbi napsal(a)

Zdravím,
Chtěl bych se zeptat. Šlo by na určitou klávesu, aby sloupce měli toto podmíněné formátování automaticky?
celý sloupec C - barevná škála,
sloupec D - barevná škála,
sloupec E - datový pruh,
sloupec F - datový pruh,
sloupec g - barevná škála,
sloupec H - barevná škála,
sloupec I - barevná škála,
sloupec M datový pruh,
sloupec N - datový pruh,
Sloupec O - datový pruh,
sloupec P - datový pruh,
sloupec R - datový pruh.
.....

     Nevím co máte na mysli tím "Šlo by na určitou klávesu, aby.." - zřejmě myslíte "stisknutí klávesy" a odlišovat z podmíněného formátování "barevnou škálu" a také "datový pruh" jako nastavení. prostě si nepředstavím co se má dít po stisknutí klávesy - trvale obarvit podle podmínky, nebo jen dočasně? Chápu, že potřebujete podmínkou obarvit určité sloupce podle rozsahů hodnot, ale jakou máte představu?
1) Postavíte kurzor do sloupce a stisknete klávesovou zkratku?
2) Přednastavíte klávesové zkratky bez toho kde je kurzor?
3) Jak už jsem uváděl výše - obarvit "na stálo", nebo jen "dočasně"?


     Jestli tomu dobře rozumím, tak to děláte kvůli přehlednosti - tedy nejspíš dočasně. Mám podobné řešení, jen je řízeno jinak - výběrem typu podbarvení, které se dá snadno přizpůsobit Vašim představám. Podívejte se na ukázku zde Zapínání podmíněného formátu (příklad docházka)
     Barevná škála se zapíná v listu PLÁNOVÁNÍ, buňka D3. Je to roletka "platnost dat" kterou se podmíněné formátování zapíná, tedy nikoliv makrem a nikoliv klávesovou zkratkou, ale funkčně by to mohlo být to co hledáte.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#6 9. 4. 2021 07:50:38

harbi
Člen
Registrace: 8. 4. 2021
Příspěvků: 5

Re: Automatické nastavení sloupců na klávesu.

Zkusil jsem vymazat rem, ale nepomohlo hmm

kamlan napsal(a)

Ten Záznam makra má v tomto případě v sobě chybu kterou občas to zaznamenávání makra dělá - přidá slůvko rem značící komentář i před příkazy. Otevřete si to zaznamenané makro a smažte slůvka rem před příkazy dispatcher.execute(...) :-). Pak by vá to mělo chodit.


Ovšem nevím jestli vám ty prázdné podmínky k něčemu budou.
1) Napadá mě že možná něco chcete urychlit. Podle mých zkušeností tím nic neurychlíte. Sice je tam budete mít, ale když do nich pak ručně nebo makrem budete zadávat hodnoty, tak to udělá to, že vám to nepřidá jen hodnoty, ale smaže ty prázdné podmínky a dá tam jako nové ty s hodnotami. Takže tím nic neurychlíte a jen budete dělat o půl práce navíc.
2) A pro dobrý přehled myslím dobře slouží menu Formát/ Podmíněný/ Spravovat

Offline

#7 9. 4. 2021 08:03:58

harbi
Člen
Registrace: 8. 4. 2021
Příspěvků: 5

Re: Automatické nastavení sloupců na klávesu.

Přesně tak myslím po stisknutí klávesy. Jde mi vlastně o to, že musím po jednom vždy označit např. sloupec c -> podmíněný -> barevná škála > OK a takhle po jednom to musím dělat na každým sloupci. Soubory se kterými pracuji jsou vždy stejné, akorát se mění čísla v jednotlivých sloupcích, proto bych potřeboval tento proces nějak urychlit na klávesu. Posílám názorný obrázek.
Díky:)
tabulka.png



neutr napsal(a)
harbi napsal(a)

Zdravím,
Chtěl bych se zeptat. Šlo by na určitou klávesu, aby sloupce měli toto podmíněné formátování automaticky?
celý sloupec C - barevná škála,
sloupec D - barevná škála,
sloupec E - datový pruh,
sloupec F - datový pruh,
sloupec g - barevná škála,
sloupec H - barevná škála,
sloupec I - barevná škála,
sloupec M datový pruh,
sloupec N - datový pruh,
Sloupec O - datový pruh,
sloupec P - datový pruh,
sloupec R - datový pruh.
.....

     Nevím co máte na mysli tím "Šlo by na určitou klávesu, aby.." - zřejmě myslíte "stisknutí klávesy" a odlišovat z podmíněného formátování "barevnou škálu" a také "datový pruh" jako nastavení. prostě si nepředstavím co se má dít po stisknutí klávesy - trvale obarvit podle podmínky, nebo jen dočasně? Chápu, že potřebujete podmínkou obarvit určité sloupce podle rozsahů hodnot, ale jakou máte představu?
1) Postavíte kurzor do sloupce a stisknete klávesovou zkratku?
2) Přednastavíte klávesové zkratky bez toho kde je kurzor?
3) Jak už jsem uváděl výše - obarvit "na stálo", nebo jen "dočasně"?


     Jestli tomu dobře rozumím, tak to děláte kvůli přehlednosti - tedy nejspíš dočasně. Mám podobné řešení, jen je řízeno jinak - výběrem typu podbarvení, které se dá snadno přizpůsobit Vašim představám. Podívejte se na ukázku zde Zapínání podmíněného formátu (příklad docházka)
     Barevná škála se zapíná v listu PLÁNOVÁNÍ, buňka D3. Je to roletka "platnost dat" kterou se podmíněné formátování zapíná, tedy nikoliv makrem a nikoliv klávesovou zkratkou, ale funkčně by to mohlo být to co hledáte.

Offline

#8 9. 4. 2021 13:18:10

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 368

Re: Automatické nastavení sloupců na klávesu.

Makro si označí vybraný sloupec (nastavuje se v konstantě sSloupec) a vyvolá pro něj dialog podmíněné formátování, který je potřeba odenterovat. To pro jakou podmínku vyvolá dialog je vztato ze Záznamu makra. Zobrazil se mi dialog s podmínkami a nepovedlo se mi udělat to, aby to ten dialog i automaticky "odenterovalo".

Sub podminkaNaSloupecD 'označí data ve sloupci 'sSloupec' a vyvolá dialog pro podmíněné formátování, který je nutné doplnit nebo odenterovat
	const sSloupec="D" 'který sloupec označit
	dim document as object, dispatcher as object, oDoc as object, oList as object, oCur as object, oRozsah as object, i&
	oDoc=ThisComponent
	oList=oDoc.CurrentController.ActiveSheet 'aktivní list
	document=oDoc.CurrentController.Frame
	dispatcher=createUnoService("com.sun.star.frame.DispatchHelper")
	i=oList.RangeAddress.EndRow
	oRozsah=oList.getCellRangeByName(sSloupec & "1:" & sSloupec & i-1)
	oDoc.CurrentController.Select(oRozsah)
	rem konkrétní dialog pro podmíněné fomrátování převzat ze záznamu makra
	'dispatcher.executeDispatch(document, ".uno:ConditionalFormatDialog", "", 0, Array()) 'podmíněné formátování
	dispatcher.executeDispatch(document, ".uno:ColorScaleFormatDialog", "", 0, Array()) 'barevná škála
End Sub

Offline

#9 9. 4. 2021 16:58:16

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Automatické nastavení sloupců na klávesu.

harbi 08:03:58 napsal(a)

Přesně tak myslím po stisknutí klávesy. Jde mi vlastně o to, že musím po jednom vždy označit např. sloupec c -> podmíněný -> barevná škála > OK a takhle po jednom to musím dělat na každým sloupci. Soubory se kterými pracuji jsou vždy stejné, akorát se mění čísla v jednotlivých sloupcích, proto bych potřeboval tento proces nějak urychlit na klávesu. Posílám názorný obrázek.
Díky:)
.........................
1) Postavíte kurzor do sloupce a stisknete klávesovou zkratku?
2) Přednastavíte klávesové zkratky bez toho kde je kurzor?
3) Jak už jsem uváděl výše - obarvit "na stálo", nebo jen "dočasně"?

     Stále si nerozumíme. Pokud potřebujete dle obrázku vždy a na stálo obarvit stejné sloupce tak není potřeba aktivovat "barevnou škálu", nebo "datový pruh" na stisknutí klávesové zkratky.
     Pokud potřebujete individuálně vybírat data a tato nejsou vždy ve stejných sloupcích, tak zbývá dotaz zda se mají také vybrané sloupce deaktivovat (například při chybě), respektive mají se vybraná data aktivovat "na jednotku dočasnosti 1 furt", nebo se má podmíněné podbarvení ztratit, jakmile zrušíte výběr?


     Ono je to dost důležité. Má se aktivace manuálně zadávat a případně deaktivovat, nebo stačí jen krátkodobý náhled dokud je výběr aktivní? Jestli se má vždy zachovat nějaké podbarvení, není řešením obarvit vše a pouze deaktivivat "nechtěné".
     Pokud hraje úlohu "rychlé nastavení" klávesou tak to je jen relativně rychlé oproti výběru kombinace roletkou. Navíc klávesovým zkratkám budete rozumět pouze Vy - nikdo jiný s tím pracovat nebude - že? Rychlá analýza očima - a co když bude chybná - budete to manuálně mazat, nebo raději deaktivovat?


     Jednoduše jenom zapnout "podmíněný formát" makrem už řeší uživatel "kamlan", ale zadání je nedomyšlené a pro mne nedostatečné - potřebuji vyjádřit nejen "a" (zapnout) - potřebuji vyjádřit přesně co se má dít. Hlava mi nebere ani to, proč když jsou soubory "podobné" není možné nastavit konstantní a standardní podmíněné formátování. To co vyhodnocujete "očima" je predikovatelné jako podmínka ve vzorci (nebo algoritmu).
     Chápu, že to potřebujete pro efektní prezentaci nějakých dat před nějakým obecenstvem, ale i potom potřebuji údaj o tom, že po aktivaci zůstane výběr natrvalo aktivován, nabo že potřebujete obarvení jen dočasně pro představu například :
1. klik - podbarví se úsek dočasně "jen na kukandu" a vyskočí dialog "obarvit trvale".
2. klik potvrdí trvalé podbarvení.
3. Při chybě opětovným kliknutím na vybarvený úsek odbarvit buď s dotazem, nebo hned bez dotazu.


    Prostě údaj "obarvit kliknutím" nestačí. Mimo toho výběrem "platnost" lze zajistit vše bez problému a klávesová zkratka je dle mne jen na efekt který ovládáte pouze Vy. Krom toho jsou klávesové zkratky potřebné ve velkém množství a makra lze ovládat i jinak.
    Dokonce když vyberete úsek stačí kliknout v bočním panelu na správný styl (který nastavíte jako Váš explicitní) - a je to na stálo - bez podmínky. Opětovným výběrem můžeme úsek odbarvit - volbou "standardní styl". Prostě mi to nedává moc smyslu, ale je to Vaše představa, která se možná opírá o skutečnost, že to někdo dělá podobně. Proto prosím upřesněte hlavně to co se má dít po obarvení - nebo v případě chyby ap.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#10 9. 4. 2021 22:25:09

harbi
Člen
Registrace: 8. 4. 2021
Příspěvků: 5

Re: Automatické nastavení sloupců na klávesu.

Dobře pokusím se to nějak lépe vysvětlit. Stáhnu si jeden soubor, který musím zkontrolovat viz. obrázek nahoře, zde musím manuálně po jednom označit sloupec "C" -> podmíněný -> barevná škála -> ok, poté označit sloupec "D" - > barevná škála -> ok, a takhle to musím udělat u všech sloupců. Jde mi o to abych se v souboru lépe vyznal a bylo to pro mě přehlednější. Poté si otevřu další soubor, který je úplně stejný, akorát je z jiného dne, tudíž musím manuálně znovu nastavit na C barevnou škálu atd sloupec po sloupci, poté stáhnou další soubor a znovu stejný postup. Tak jsem se pokoušel hledat způsoby, jak to urychlit abych nemusel vždy po otevření souboru označit sloupec a dát na něj manuálně podmíněné formátování. Potřebuji, aby jen po stisknutí klávesy nebo klidně pokud půjde po otevření souboru měli sloupce to své formátování. Jde primárně o to, zda by šlo nastavit na mou zvolenou klávesovou zkratku, aby po stisknutí bylo už na sloupci C - barevná škála, D barevná škála, E datový pruh atd. Potřebuji si zvýraznit čísla v tabulce viz obrázek nahoře, poté čísla zkontroluji a soubor zavřu tím to pro mě končí. Otevřu si další soubor, kde čísla jsou stejné jako na obrázku nahoře, akorát z jiného dne a postup s vyznačováním sloupců musím zase manuálně aplikovat.

Vybrané sloupce se nemusí deaktivovat, jak píši stačí mi to jen takhle vyznačené jako nahoře na obrázku, zkontroluji to a soubor zavřu, poté stáhnu zase jiný den s jinými hodnoty.

Offline

#11 10. 4. 2021 10:05:53

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Automatické nastavení sloupců na klávesu.

Ano to už je lepší. Makro jaké požadujete se musí vytvořit jako kopírování Formátu. To není až takový problém, ale vy ho musíte upravit, což nemusí být problém. Nejde o standardní programování.


     Barevná škála a datový pruh jsou poměrně "mladou záležitostí a zatím neexistuje API. V rámci UNO existuje pouze volání této metody, takže dál se nikdo nedostane, nežli se dostal "kamlan". Hledal jsem řešení na netu a našel nějaký komentář (tuším od pana Klempta), který uváděl právě to, že pro tyto věci není v rámci LO 4.2 API. Příslíbil, že jej vytvoří - nestalo se tak až doposud.
     Problém je v tom, že AOO nic takového nemá, a proto k tomu neexistuje ani žádná dokumentace. Lze ale využít vlastnosti kopírování, kterou lze použít ve formě makra tak jak potřebujete. Jednoduše se uloží sešit s definovanými formáty "datobvý pruh a barevná škála kde jsou podmínky přednastaveny.
     Makrem se otevře tento sešit jako skrytý a formát se načte do paměti. Potom už stačí vložit jinak - jen jako "Formát" a tento úkon lze spojit do stejného makra, takže vyberete v novém sešitě úsek a po stisknutí klávesové zkratky se nejprve formát zkopírzuje a vzápětí aplikuje na cílový sešit.


     Je to celkem obtížné jen z pohledu nasměrování adresy makra na vzor. Existuje možnost mnohem přímočařejší - nakopírovat manuálně byť třeba jakou vzor jedinou buňku (nebo celý úsek) a toto potom jednoduše kopírovat do sešitů jako formát. Spíš jde jen o to, zda se má kopírovat jedna buňka s barevnou škálou a hned vedle ní datový pruh - a to potom vykopírovat do nějakého úseku (může to být celý sloupec (nebo sloupce). Jakmile máte v paměti formát, můžete ho kopírovat třeba 100 x za sebou.
     Když bude například v C1 barevná škála a v D1 datový pruh - zkopírujete do paměti úsek C1:D1 a vkládáíte už jen do všech sešitů (předpokladem je, že vedle barevné škály bude vždy datový pruh, jinak je nutné načítat barevnou škálu i datový pruh samostatně.


     Problém s makry je asi jenom v tom, že musí být uložena do "Moje makra Standard" - která jsou nad všemi sešity a dokumenty. Makro z jednoho sešitu použít nelze. Makro musí být deklarované jako "Global" a musí se v něm přepsat URL zdrojového sešitu. Pak už zbývá rozhodnout, zda se bude kopírovat jen jednotlivý styl a pro jednu buňku, nebo oba styly pro dvě sousední buňky, nebo přesný úsek, a nebo celý rozsah sloupce.
     Všechny způsoby mají svá pro a proti. Takže si ověřte jak kopírování funguje a uveďte jak kopírovat, nebo také že jste schopen základních úprav makra.


     Ty postupy nejsou složité, ale už vidím jak píšu nabobtnalý manuál. Takže očekávám Vaše vyjádření. Zejména co a jak kopírovat ze vzorového sešitu (jednu buňku, nebo celý úsek, jeden sloupec, nebo dva sousední a zda zvládnete úpravu makra).


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#12 10. 4. 2021 11:02:54

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 368

Re: Automatické nastavení sloupců na klávesu.

Mezitím co jsem psal svou odpověď už neutr také napsal :-). Ctrl+CV vlastností jedné buňky do jiných zmínil neutr, Mě napadlo ještě něco jiného. Takže má původní odpověď.


Makrem to nejspíš jen tak nepůjde, neboť to vypadá, že pro Podmíněné formátování má Basic zabudovanou podporu jen pro Podmínku. Kdyby se to mělo nastavit makrem, bylo by potřeba zjistit vlastnosti pro Barevnou škálu atd., ale to se mi nepovedlo.

Sub podminenFormatovani 'XRay vlastností pro podmíněný fomrát v určitém rozsahu buněk, funguje jne pro Podmínku, vlastnosti Barevné škály, Datového pruhu atd. už nezobrazí
	dim oDoc as object, oList as object, oRange as object, i&
	oDoc=ThisComponent 'sešit
	oList=oDoc.CurrentController.ActiveSheet 'aktivní list
	oRange=oList.getCellRangeByName("A1:A5") 'rozsah buněk kde je nějaké podmíněné formátování
	i=oRange.ConditionalFormat.Count 'počet podmíněných formátů
	msgbox "počet podmínek: " & i
	if i>0 then
		xray oRange.ConditionalFormat.getByIndex(0) 'potřebné vlastnosti toho podmíněného formátu které by se nastavily makrem
	end if
End Sub

Jestli to makrem nejde (a já nic takového slutečně nenašel), tak pokud byste trval na svém postupu, tak pod Windows by se to docela pracně dalo udělat pomocí programu Autohotkey (http://www.autohotkey.com) který umí odchytávat různé události v systému a simulovat stisk kláves či kliknutí myší. Má výbornou nápovědu ale je pro to potřeba už dobrá angličtina a nějaké ty programátorské znalosti. Makro by šlo rozšířit to předchozí které jsem uvedl výše, pomocí příkazu Shell spustit ještě skript Autohotkeye který by sledoval otevírání nových oken a posílal stisk Enter, čímž by to v podstatě "odklikal". Skriptovat to však v tom Autohotkeyi není moc sranda. Možná by to někdo dokázal snadno na tamním fóru, ale s tím zkušenosti nemám žádné.


Druhá věc je jestli by to nešlo udělat pomocí Šablony. Nastavit ty podmínky pro celé sloupce na prázdný sešit a ten si uložit jako šablonu. No a potom otevírat šablonu a nějak do ní importovat ta číselná data, možná pomocí Ctrl+C a Úpravy/ Vložit jinak/ Vložit jinak -> Text, Čísla.

Ale se šablonami moc zkušeností nemám a nevím. Navíc jsem z některých událostí co se mi odehrály v týdnu dost přetaženej a tak budu minimálně několik dní mimo, fakt toho na mě bylo moc a potřebuju "vysadit".

Offline

#13 12. 4. 2021 06:20:55

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,471

Re: Automatické nastavení sloupců na klávesu.

Autor se neozval a tak dávám funkčního řešení, které si musí uživatel sám upravit. Je to vše popsánu v sešitě zde Škála a datový pruh.


     Po úpravách se s tím pracuje podobně jako když manuálně nabereme vzorek a vložíme jen jako „formáty". Pouze se vytvoří klávesové zkratky kterými se to spouští.
     Šlo by to ještě více zautomatizovat – například tak, že na konci každého makra vytvoříme odkaz na makro „Vlož". To ale nedoporučuji. Může nastat problém s pamětí protože by se opakovaně načítaly stejná data. Spíš doporučuji načíst oba formáty najednou – pokud se hodí postup vložení barevné škály a vpravo datový pruh. Ale záleží na uživateli.


     Základní makro načtení se provádí „viditelně", ale šlo by to i skrytě (hidden). Jde o to, že se sešit na okamžitě otevře a hned poté zavře. Když by vznikla chyba zůstane zdrojový sešit otevřený. To je příznak chyby – zdrojový soubor zůstane rozpakovaný. Následně se musí zavřít a pokud zůstává stále v rozbaleném stavu – je nutné tento opravit (stačí soubor kopie smazat v adresáři).

Editoval neutr (12. 4. 2021 06:22:55)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#14 12. 4. 2021 18:11:05

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 368

Re: Automatické nastavení sloupců na klávesu.

Ač né tedy ještě úplně "intelektuálně fit", tohle mi dnes šlo docela pěkně. Zde to je. Je pro to potřeba udělat si soubor v Calcu a naklikat si tam na celé prázdné sloupce ta potřebná Podmíněná formátování. Pak jej uložit jako šablonu a zkontrolovat jestli je ta šablona v adresáři který je nastaven v Nástroje/Možnosti/LibreOffice/Cesty -> Šablony. Pak dát jeho jméno do makra, nyní je tam const sSouborSablony="calcPodm.ots" tak změnit to calcPodm.ots na ten svůj název.

Kopíruje rozsah buněk od A1 do konce použité oblasti v ODS. Kdyby měl kopírovat od jiných buněk, tak si lze v makru nastavit proměnné i0 a j0 (např. i0=0 : j0=1 by kopíroval až od A2).


No a pak si otevřít ten svůj ODS soubor s daty a spustit následující makro. To si zjistí rozsah vašich dat v tom ODS, vytvoří si na pozadí soubor z oné šablony, udělá Ctrl+C v rozsahu dle ODS a do ODS nakopíruje jakožto Vložit jinak -> Formáty, Přidat zvolené Podmíněné formátování.

Sub podmineneFormatovaniSablonaCtrlCV 'otevře šablonu, udělá CtrlC na rozsah buněk z aktuálního ODS aby zkopíroval Podmíněné formátování do aktuálního ODS souboru
	const sSouborSablony="calcPodm.ots" 'jméno souboru šablony
	dim args1(1) as new com.sun.star.beans.PropertyValue, args2(5) as new com.sun.star.beans.PropertyValue
	dim sUrl$, sSablonyUrl$, oSoubor as object, p(), oList as object, oListSabl as object, oCur as object, oRozsah as object, i&, j&, i0&, j0&, oDoc as object
	oDoc=ThisComponent 'aktuální ODS
	oList=oDoc.CurrentController.ActiveSheet 'aktuální list ODS
	oCur=oList.CreateCursor 'kurzor
	oCur.goToEndOfUsedArea(false) 'kurzor na konec
	i=oCur.RangeAddress.EndColumn : j=oCur.RangeAddress.EndRow 'číslo posledního využitého sloupce a posledního využitého řádku
	i0=0 : j0=0 'od prvního sloupce od prvního řádku (čísla buněk: A1=0,0; A2=0,1; B1=1,0; B2=1,1 atd.)
	rem otevřít soubor vytvořený ze šablony a zkopírovat z něj data, z prvního listu; pak jej zavřít
	args1(0).Name="Hidden" : args1(0).Value=true 'otevřít skrytý
	args1(1).Name="AsTemplate" : args1(1).Value=true 'udělat nový soubor ze šablony (pro jistotu ať se nepodělá šablona)
	sSablonyUrl=ConvertToUrl(CreateUnoService("com.sun.star.util.PathSettings").Template_writable) 'cesta k šablonám nastavená v Nástroje/Možnosti/LibreOffice/Cesty -> Šablony
	sUrl=sSablonyUrl & "/" & sSouborSablony
	oSoubor=StarDesktop.LoadComponentFromUrl(sURL, "_blank", 0, args1()) 'soubor ze šablony
	oListSabl=oSoubor.sheets(0) 'první list šablony
	oRozsah=oListSabl.getCellRangeByPosition(i0, j0, i, j) 'rozsah použitých buněk
	oSoubor.CurrentController.select(oRozsah) 'vybrat rozsah buněk v šabloně dle rozsahu v aktuálním ODS
	uno("Copy", oSoubor) 'Ctrl+C
	oSoubor.Close(true) 'zavřít šablonu
	rem teď dát Ctrl+V do ODS souboru
	oRozsah=oList.getCellRangeByPosition(i0, j0, i, j) 'rozsah použitých buněk v ODS
	oDoc.CurrentController.select(oRozsah) 'vybrat první řádek šablony
	args2(0).Name="Flags" : args2(0).Value="T" 'Vložit jinak, parametry ze záznamu makra
	args2(1).Name="FormulaCommand" : args2(1).Value=1
	args2(2).Name="SkipEmptyCells" : args2(2).Value=false
	args2(3).Name="Transpose" : args2(3).Value=false
	args2(4).Name="AsLink" : args2(4).Value=false
	args2(5).Name="MoveMode" : args2(5).Value=4
	uno("InsertContents", oDoc, args2) 'Vložit jinak -> Formáty, Přidat
	uno("Deselect", oDoc) 'odznačit
End Sub

Sub uno(s$, oDoc as object, optional args()) 'provede uno příkaz
	if isMissing(args) then args=Array()
	s=".uno:" & s 'jaký uno příkaz
	createUnoService("com.sun.star.frame.DispatchHelper").executeDispatch(oDoc.CurrentController.Frame, s, "", 0, args()) 'provést
End Sub

Nebo druhé makro které to dělá opačně a asi bude o něco pomalejší. Soubor se šablonou je k tomu potřeba stejný jako v předešlém případě. Makro si udělá nový soubor ze šablony a k tomu otevírací dialog pro výběr ODS souboru ve kterém máte data a ta data nakopíruje (jako prostý neformátovaný text) do nového souboru.

Sub podmineneFormatovaniZeSablonyImport 'otevře soubor ze šablony která má nastavené podmíněné formátování na dané sloupce a naimportuje do něj data z vybraného ODS souboru
	const sSouborSablony="calcPodm.ots" 'jméno souboru šablony
	dim args1(0) as new com.sun.star.beans.PropertyValue, args2(0) as new com.sun.star.beans.PropertyValue, oDoc as object
	dim sUrl$, sSablonyUrl$, oSoubor as object, sSoubor$, p(), oList as object, oCur as object, oRozsah as object, i&, j&, i0&, j0&
	rem vybrat soubor a načíst z něj data z prvního listu
	args1(0).Name="Hidden" : args1(0).Value=true	
	sSoubor=vyberSouborODS 'vybrat ODS soubor ze kterého se budou brát data
	if sSoubor="" then exit sub
	oSoubor=StarDesktop.LoadComponentFromUrl(sSoubor, "_blank", 0, args1()) 'otevřít ho skrytý
	oList=oSoubor.sheets(0) 'první list
	oCur=oList.CreateCursor 'kurzor
	oCur.goToEndOfUsedArea(false) 'kurzor na konec
	i=oCur.RangeAddress.EndColumn : j=oCur.RangeAddress.EndRow 'číslo posledního využitého sloupce a posledního využitého řádku
	i0=0 : j0=0 'od prvního sloupce od prvního řádku (čísla buněk: A1=0,0; A2=0,1; B1=1,0; B2=1,1 atd.)
	oRozsah=oList.getCellRangeByPosition(i0, j0, i, j) 'rozsah použitých buněk
	p=oRozsah.GetDataArray() 'data z buněk
	oSoubor.close(true) 'zavřít soubor
	rem teď dát data do souboru otevřeného ze šablony
	sSablonyUrl=ConvertToUrl(CreateUnoService("com.sun.star.util.PathSettings").Template_writable) 'cesta k šablonám nastavená v Nástroje/Možnosti/LibreOffice/Cesty -> Šablony
	sUrl=sSablonyUrl & "/" & sSouborSablony 'šablona
	args2(0).Name="AsTemplate" : args2(0).Value=true
	oDoc=StarDesktop.LoadComponentFromUrl(sURL, "_blank", 0, args2()) 'soubor otevřený dle šablony
	oList=oDoc.sheets(0) 'první list
	oRozsah=oList.getCellRangeByPosition(0, 0, i, j) 'rozsah použitých buněk
	oRozsah.SetDataArray(p) 'nastavit data
End Sub

Function vyberSouborODS() as string 'spustí dialog pro výběr souboru a vrátí URL jméno souboru
	dim oFileDlg, oFileAccess, oFiles, sFile$, sInitDir$
	oFileDlg=CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
	oFileDlg.AppendFilter("Calc (*.ods)", "*.ods") : oFileDlg.SetCurrentFilter("Calc (*.ods)") 'filtry na typ souborů
	oFileAccess=CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
	sInitDir=convertToUrl(CreateUnoService("com.sun.star.util.PathSettings").Work) 'výchozí adresář z Nástroje/Možnosti/LibreOffice/Cesty -> Dokumenty
	if oFileAccess.Exists(sInitDir) then
		oFileDlg.SetDisplayDirectory(sInitDir)
	end if
	if oFileDlg.execute() then
		oFiles=oFileDlg.getFiles()
		if ubound(oFiles)>=0 then
			sFile=oFiles(0)
		end if
	end if
	vyberSouborODS=sFile
End Function

Offline

Zápatí