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

#1 Re: Calc » Výpis hodnot vzorců? » 29. 11. 2019 18:26:30

Jednoduchá ukázka pro vypsání hodnot ve vzorci namísto adres buněk je zde https://uloz.to/file/qm7GdjViyroF/hodno … ek-kl1-ods . Používá se jako vzorec např. =HODNPRO(FORMULA(D1)). Funguje i s $ v adrese (např. $A1, B$2) ale nefunguje s adresami pro odkazy do jiných listů (což jsou např.. List2.A1... apod.) -> vzhledem k různým možnostem jak listy pojmenovat by to bylo pracnější a to už dělat nechci.

#2 Re: Calc » Výpis hodnot vzorců? » 29. 11. 2019 10:51:59

Prokázat skutečnou existenci vzorce v dané buňce lze jednak tím, že ten se zobrazuje v liště vzorců Zobrazit/ Nástrojové lišty/ Lišta vzorců - to kdyby byla vypnutá; a jednak tím, že se dají zobrazit vzorce přes Zobrazit/ Vzorec - z tohoto zobrazení snad nikdo svéprávný nemůže pochybovat o tom, že je v buňce vzorec a nikoliv hodnota natvrdo :-); poté lze tou samou volbou samozřejmě zobrazení vzorců opět deaktivovat čímž budou vidět vypočtené hodnoty.

Jiné důkazy o vzorci jsou nejspíš jen čím dál větší zesložiťování, jež povede jedině k chybám.

#4 Re: Calc » Makra z excelu » 17. 11. 2019 21:55:59

Tak je to zde https://uloz.to/file/gHtnZolQIzw5/tabulka-slev-kl2-ods .

Když dvojkliknete někam mezi sloupce A-J, tak se vám to přenese do buňky I36 v nabídkovém listu. Nevím jestli tam v té buňce I36 nemáte to počítání nějak divně, neb nyní jak mi to vychází tak v Tabulkovém listě mezi sloupci A-J vyklikáváte výši nějaké té slevy; ale možná to chápu špatně a o to vám nešlo :-)..

Když v tabulkovém listě dvojkliknete někam do sloupce N, zkopíruje se vám do nabídkového listu jak hodnota ze sloupce N, tak hodnota z vedlejšího sloupec O. Dvojklikem do sloupce O se nic nestane. Jelikož tam máte pro ty údaje 4 řádky, tak vám tam půjdou nakliknout 4 hodnoty, při páté už vám to vypíše hlášku že je plno.


Druhý nabídkový list se vyplňuje při klikání v druhém tabulkovém listě, není tedy nijak závislý na klikání v prvním tabulkovém listě, což jsem předpokládal že je váš požadavek. Počítám že ve druhém nabídkovém listě jsou ty 2 tabulky kopie, takže jsem do druhé umístil rovnítka na hodnoty té první, abych makrem nepsal do dvou tabulek to samé (např. v buňce K21 je =A21 atd.).


Kdybyste někdy potřebovala změnit buňky kam se to kopíruje, tak jsou nastavené v makru ve funkci dat().


Oproti předchozí ukázkové verzi nemusíte spouštět žádný start na dvojkliky, přišel jsem na to že makro pro dvojklik se dá přímo přiřadit na daný list :-).

#5 Re: Calc » Makra z excelu » 15. 11. 2019 20:43:57

Nevím co myslíte tím předem určeným místem v listu 2. Udělal jsem příklad zde https://uloz.to/file/gEACQfwYXlUO/calc- … ik-kl1-ods, který z aktuálního listu na ty samé pozice do Listu2 zkopíruje z buněk hodnotu nebo text, vzorců si nevšímá.

List2 se tak musí jmenovat a musí v sešitě již být - ten název se dá změnit v makru kopiruj.

Spouští se to i ukončuje z menu OVLÁDÁNÍ. Je dobré to při nepotřebě ukončovat, ono to odchytávání a řízení událostí myši může někdy udělat i trochu bordel :-).

#6 Re: Calc » výpis a spočítání duplicitních údajů » 12. 11. 2019 14:41:17

V češtině toho k makrům skutečně moc není - nejlepší kniha je asi stále J. Pasteriek - Makrá v openoffice.org, byť je to z velké části pro Writer.
Krom tohoto webu jsou spíše takové občasné drobné pokusy, avšak nic většího co by šlo hlouběji (gůglil jsem občas openoffice makra nebo libreoffice makra).


Možná znáte, ale pro makra je výtečná pomůcka XRay - viz. https://forum.openoffice.cz/viewtopic.p … 801#p23801 - dát se s ním zjistit třeba nějaká konkrétní vlastnost nebo metoda, a dle toho konkrétního názvu se poté na webu nějaký příklad s použitím vyhledává mnohem lépe, i když pak už je to většinou o angličtině.

#7 Re: Calc » Jak importovat text z calcu do writeru a zároveň ho naformátovat » 8. 11. 2019 20:32:30

neutr: O Štítcích jsem vůbec netušil a musel bych se s nimi naučit, což by bylo na déle než ten postup přes html :-). Nicméně včera večer už jsem byl přetaženej a tak jsem se na třeba pokus o odstranění těch zalomení stránek makrem už nevzmohl, kdežto s html docela umím (vysvětleno dále). Dnes jsem byl úspěšnější, ukázkový spoubor zde https://uloz.to/file/UBpFCI4aH843/tabul … navodu-odt. Jinak makro z něj tady

Sub odstranitZalomeniStranekVtabulkach
	rem odstraní zalomení stránek která jsou dána nastavením vlastností tabulek
	rem v Tabulka/ Vlastnosti -> Tok textu/ Rozpojit
	dim oDoc, oTables, oTable, i%
	oDoc=thisComponent
	oTables=oDoc.TextTables
	for i=0 to oTables.count-1 'procházet tabulky
		oTable=oTables(i) 'tabulka
		rem tohle odstraní to zalomení stránek
		oTable.breakType=0 : oTable.pageDescName=""
	next i
End Sub

Při vkládání makrem pod tabulku možná ani není potřeba vkládat řádek, stačí nastavit spodní okraj tabulky

Sub tabulkaOdsazeniSpodku
	dim oDoc, otext, i%, oTable
	oDoc=StarDesktop.LoadComponentFromUrl("private:factory/swriter", "_blank", 0, array()) 'nový soubor Writeru jako neviditelný
	oText=oDoc.text
	for i=0 to 1
		oTable=oDoc.createInstance("com.sun.star.text.TextTable") 'vytvářená tabulka ve Writeru
		oTable.initialize(2,2) '2 řádky, 2 sloupce
		oText.insertTextContent(oText.getEnd(),oTable,false) 'vložit tabulku do dokumentu
		oTable.setDataArray(Array(Array("aa","bb"), Array("cc","dd"))
		oTable.bottomMargin=300 'mezera pod tabulkou
	next i
End Sub

Chtělo by to v těch námi vytvořených makrech případně i nastavit, aby se tabulka nerozdělovala přes stránky a sloupce, ale to už nyní dělat nebudu.


K tomu redim preserve.

neutr napsal(a)

To co je v kódu vedeno ukazuje na další proměnnou která v ukázce není definovaná. Ukazuje jak se dynamicky přidávají například property - tedy třeba celé array.

Jistě, pomocí redim preserve se dají dynamicky přidávat další proměnné, ale zmiňoval jste pod ukázkou "... respektive si naklonovat nějaký existující ..." a já myslel, že ta ukázku měla udělat i ono naklonování objektu s tím, že nově přidanému objektu se budou dát měnit vlastnosti aniž by to měnilo objekt vzorový - a to ta ukázka jak jsem ukázal neudělá -> přidá sice někam nějaký další prvek, ovšem při změně vlastností toho přidaného prvku se změní i vlastnosti vzorového prvku. Kdybych tam do toho x dal tu vytvořenou tabulku, a pak jí přidal tím postupem do y, tak při změně nějakého parametru v y by se mi to změnilo i v x, protože by to neudělalo modifikovatelný klon, ale pouze do dvou proměnných umístilo jedno a to samé, což by tedy měnilo stále jen první tabulku. Když jsou v tom poli jen jednoduché proměnné nafrkané tam z jiného pole, tak to redim preserve skutečně udělá klon těch jednoduchých proměnných.

Sub klon1 'naklonuje pole když jsou v něm jednoduché proměnné (tedy bez objektových struktur) (https://forum.openoffice.org/en/forum/viewtopic.php?f=21&t=93610)
	dim x(2), y(2)
	x=array("a","b","c")
	y=x 'tohle neudělá nezávislou kopii pole
	y(1)="Q"
	msgbox x(1) & chr(13) & y(1) 'došlo sice ke změně v y, ale také v původním x
	redim preserve y(ubound(y())) 'tohle už to pole osamostatní (udělá tedy modifikovatelný klon který již při změně vlastností nezmění vlastnosti v původním vzoru)
	y(1)="W"
	msgbox x(1) & chr(13) & y(1) 'došlo ke změně jen v y
End Sub

rem jenže 'osamostatnění' pole nefachá na objekty
	Type tVzor
		s$ i%
	End Type
Sub klon2neAne 'nevytvoření modifikovatelné kopie objektu přes redim preserve
	dim o1 as new tVzor, o2 as variant, x(2), y(2)
	o1.s="abc" : o1.i=123
	x(0)=o1 'dám objekt do pole
	y=x 'dám pole do druhého pole
	redim preserve y(2) 'zkusím fintu jako v proceduře klon1 o osamostatnění prvků pole
	o2=y(0) 'dám do druhého objektu rádoby osamostatněný prvek pole
	msgbox o1.s & o1.i & chr(13) & o2.s & o2.i 'o1 i o2 jsou stejné takže se to může jevit jako úspěšné zkopírování o1 do o2
	o2.i=456 'změna o2
	msgbox o1.s & o1.i & chr(13) & o2.s & o2.i 'o1 i o2 jsou opět stejné, takže o2 není klonem o1 ale jen redundantním o1
End Sub
kamlan napsal(a)

Stačí v tom kódu co jste uvedl změnit nějakou vlastnost a změní se to u obou objektů.

neutr napsal(a)

Ale v tom je to řešení právě výhodné

. Ale k čemu by mělo být výhodné mít ve dvou proměnných jedno a to samé? Nebo jinak, k čemu by mělo být výhodné mít duplicitní proměnné? Kdyby šlo o neblahý přístup typu samotných MS Windows "RAMky je přece dost!" tak jistě ano :-), ale jinak v tom smysl nějak nevidím. Možná jsem ale špatně pochopil vaše původní popsání. 

neutr napsal(a)

Správným řešením by bylo nastavení parametrů pro objekt vlastní tabulky a tu potom pouze replikovat.

Já si z tohoto vyvodil, že rychlejší by mohlo být udělat kopii proměnné oTable a ve smyčce for..next pak měnit pouze pár vlastností kopie namísto použitého vytváření pokaždé nové proměnné oTable=oDoc.createInstance("com.sun.star.text.TextTable") právě uvnitř for..next.


Jak jsme to udělali oba:

for ...
	oTable=oDoc.createInstance("com.sun.star.text.TextTable")
	...
	oText.insertTextContent(oCurs, oTable, False)
next

Jak jsem si myslel že jste to urychlení myslel :-)

oTable=oDoc.createInstance("com.sun.star.text.TextTable")
oKOPIE=kopieObjektu(oTable)
for ...
	oKOPIE.zmenNeco
	oText.insertTextContent(oCurs, oKOPIE, False)
next

No a na vytvoření toho modifikovatelného klonu(kopie) oKOPIE jsem si myslel že zobrazujete právě tu ukázku Type FieldPairType .... Ale možná jsem ten váš myšlený postup blbě pochopil, nevím.


Tu kopii proměnné oTable z oTable=CreateInstance(...) se mi prostě vytvořit nepodařilo a možná to prostě možné není, neboť sám program Libre (zřejmě soffice.exe či soffice.bin) dle některých jejích částí něco vykonává a jistě by docházelo ke kolizím, kdyby se udělal nezávislý klon a v jedné z těch dvou verzí došlo k nějaké změně. Jak by se pak Libre mělo zachovat? Otevřít pro tu jednu změněnou verzi třeba úplně nový Writer? Či prostě druhou z verzí ignorovat? Nebo se snad ptát uživatele: "hele jsou dvě programátorský možnosti, kterou z nich si vybereš?"


Jinak co jsem ještě zjistil tak masivnější nasazení redim preserve dokáže být docela pomalé, ale to spíš jen tak pro zajímavost když jsem načítal data aniž bych věděl předem kolik jich bude a používal pro každý další načtený údaj redim preserve.

sub ee 'pomalé redim preserve
	dim p(0), i%, a as date, a0 as date
	a0=now
	for i=0 to 10000 '10tis za 16 vteřin, 20tis již za 1:16
		p(i)="text" & i
		redim preserve p(i+1)
	next i
	a=now-a0
	msgbox CStr(timeSerial(Hour(a),Minute(a),Second(a)))
end sub

No a co se týká vícerozměrných polí, tak já zkusil do pole načíst textový soubor který měl 23tis. řádků a když jsem je dal zobrazit v Kukátku, tak mi to zobrazilo že jsou správně načtené jen do indexu 16368 a od 16369 že jen neustále načítán jen první řádek. To samé se mi dělo když jsem zkusil různé pole polí array(array(...), array(...), ...), vždycky to načetlo správně jen těch 16369 řádků a tak jsem si chybně myslel, že tedy array má nějakou omezenou velikost. Jenže ono to načtení do pole očividně funguje dobře, ale Kukátko nejspíš holt zobrazuje špatně https://uloz.to/file/aSiRi8hV4Otk/chyba-png. Tudíž mé nadlimitní multiPole byl vlastně zbytečný výtvor :-). No ale alespoň vím, že v Kukátku je tedy zásadní chyba. Xray tolik proměnných nevypíše, krátí výpis dlouhých polí asi na 2000 řádků.


Já si vzpomněl jak to bylo s mým setDataArray a getDataArray :-). Narazil jsem na to když jsem se učil getTransferable na konci článku https://www.openoffice.cz/doplnky/kopirovani-dat , ale jelikož jsem tehdy nedělal v Calcu a měl jsem ho navíc z mně neznámých důvodů v nelibosti, tak jsem to tehdy spíše hrubě odmávl s tím, že o tom "vím" a že kdybych to potřeboval, tak se k tomu holt někdy vrátím. To byla chyba :-). Dnes už Calc mám ve velké oblibě.


Co se týká mého programování, tak sice se tomu věnuji od dětství, ale od opuštění škol ryze svérázně amatérsky. Začal jsem před 30-ti lety jako dítko chodit ještě do socialistického Domu dětí a mládeže na kroužek programování a co možná dějiny (ne)chtěly -> mohu dokonce tvrdit, že pár týdnů nato spadl celý systém :-); avšak nevnímám, že bych se na pádu tehdejšího systému jakkoliv podílel :-). No pak jsem vystudoval keply na elektroprůmce - ale nebylo to moc pokrokový, třeba praktickou maturu jsem měl v roce 1999 z instalace starších verzí Ms-Dosu, kde jsem z 5-ti disket instaloval a různě konfiguroval systémy ms-dos 3.0, 5.0 a 6.22. Na VŠ do mě začali bušit objekty, jenže já tam tehdy pochopil akorát ukazatele a dynamický proměnný a objekty už na mě byly moc těžký -> možná i tím, že jsem je krom školy nikde v ničem nepotřeboval a nebavilo mě to. Možná i tím, že tehdy jsme se pořád učili v Pascalu a nikde se v těch školách v daných předmětech neučilo žádné grafické API, tudíž mě programování ve kterém byl výstup maximálně někde do prostředí Dosu ani nebavilo. Ale dal jsem se na HTML/CSS/JavaScript/PHP a v tom si bastlil nějaký svý weby. Tehdy PHP taky objekty rozvinuté nemělo a na ty svý výtvory jsem to ani nepotřeboval. Takže někdy věci řeším tak, že to prostě dám do html a v tom to zpracovat umím.


K většímu využívání objektů se dostávám až teď (byť tedy v Libre Basicu) a teprve nyní tomu přicházím na chuť. Jenže neučím se nic nijak systematicky, třeba slovo instance ani nevím co znamená, já z oficiální programátorské terminologie vůbec znám velmi málo; a že něco je např. DLL v Javě, tak to jsem sice schopen pochopit, ale jinak s tím žádné zkušnosti nemám :-). Veškeré mé programování je v podstatě podřízeno vytváření mého transkripčního superbastlu, kde na to jdu většinou tak jak jsem to uměl ze škol + Javascriptu či PHP a kde si člověk pořád před lety musel vytvářet své funkce které vše dělaly krok po kroku (pokud si to nechtěl zpomalovat nějakými předtvořenými knihovnami ze kterých využil jen něco). Tudíž některé věci které někdo považuje třeba za "jasný učebnicový základ" nebo jak vy třeba nazýváte "typická práce v Calcu" ani neznám a jsem kolikrát velmi příjmeně překvapen, že Libre má všelijaké funkce které jednoduše udělají to, co by se jinde muselo dělat mnohem obsáhleji a ve více krocích.

#8 Re: Base » Programové ovládání prvku formuláře - VYŘEŠENO » 8. 11. 2019 15:46:25

Ještě jsem si vzpomněl na to, že základní výpis vlastností se vlastně dá udělat přes msgbox a .dbg_properties pro vlastnosti; nebo .dbg_methods pro metody; či .dbg_interfaces pro rozhraní. Mělo by tedy fungovat i

msgbox ThisComponent.Drawpage.Forms.getByName("Form1").Button1.dbg_properties

případně

o=ThisComponent.Drawpage.Forms.getByName("Form1").Button1
msgbox o.dbg_properties

Ale s XRayem se ten základní výpis nedá srovnat :-).

#9 Re: Base » Programové ovládání prvku formuláře - VYŘEŠENO » 8. 11. 2019 10:20:20

Doplňek Xray. https://berma.pagesperso-orange.fr/index2.html stáhněte třeba verzi 6.0, je to dokument ODT který má na 5. stránce tlačítko Install jež vám to nainstaluje.

Pak stačí v Basicu v Katalogu objektů (kdyžtak Zobrazit/Katalog objektů) rozkliknout knihovnu XRayTool aby se načetla do paměti a do vašeho kódu do místa kde chcete zobrazit vlastnosti proměnné napsat
xray promenna.


Ve vašem případě by to tedy bylo
xray ThisComponent.Drawpage.Forms.getByName("Form1").Button1

#10 Re: Calc » Jak importovat text z calcu do writeru a zároveň ho naformátovat » 7. 11. 2019 22:23:10

Ip.: Odkazovaný článek je perfektní a podařilo se mi do dokumentu vložit tabulku jako dle představ autora příspěvku a dát ten "tisk" - čili to vytvořilo dokument se všemi tabulkami. Příjemné je, že to Libre zpracuje docela rychle. Došlo však k jisté nevýhodě a to, že při tisku by to vytisklo každou tabulku na jednu stránku, tudíž spotřebovat na tom necelé tři balíky papíru (autor potřeboval přes 1000 tabulek) by rozhodně nebylo ono. Nicméně dá se to obejít docela snadno, já to zkusil přes html :-).

Výsledný dokument stačí dát uložit jako HTML, to pak otevřít ve Writeru a dát Zobrazit/ HTML zdroj. Objeví se html kód a v tom stačí vyhledat řádek který začíná na <table a v něm označit parametr style="page-break-before: always" (případně mi to někdy vytvořilo style="page-break-before: always; page-break-inside: avoid"), dát Ctrl+H a v nahrazujícím dialogu jen zmáčknout Nahradit vše. Nebo lze dát vyhledat jen to page-break-before: a nějak to zmršit, třeba to nahradit za ŘŘŘpage-break-before: -> když v html kódu je něco špatně tak to programy chytře ignorují :-) -> a zde jde o to se prostě zbavit toho zalamování tabulek na nové stránky jež je dáno oním parametrem.

Pak stačí zase dát Zobrazit/ HTML zdroj aby se to přeplo na vizuální zobrazení a poté přepnout Zobrazit/ Normální na klasické zobrazení a už to nebude rozestránkované :-).

Jistá nevýhoda převodu do html může být ale ta, že se může ztratit nějaké složitější formátování textu které se z odt do html prostě nepřevede.



neutr: To klonování objektů přes pole nefunguje. Redim preserve udělá kopii pole pro normální vlastnosti jako string, integer apod., ale pro části objektů zanechá v těch částech reference místo aby zkopíroval hodnoty. Stačí v tom kódu co jste uvedl změnit nějakou vlastnost a změní se to u obou objektů.

	Type FieldPairType
		fieldName As String
		fieldValue As String
	End Type
	
	Type FieldsListType
		fieldCnt As Integer
		fieldsAllocated As Integer
		fields As Variant
	End Type

Sub main3
  Dim x(2) As New FieldPairType
  x(0).fieldName = "bob"
  x(0).fieldValue = "joe"
 
  Dim y As New FieldsListType
  y.fields = x()
 
'  MsgBox y.fields(0).fieldName
 
  Dim a() As Variant
  a() = y.fields

  ReDim Preserve a(3)
  y.fields = a()
 
	MsgBox "x(0): " & x(0).fieldName & chr(13) & "y(0): " & y.fields(0).fieldName & chr(13) 'vypíše původní vlastnosti
	
	x(0).fieldName="jiny" 'změní vlastnosti jak pro x tak pro y
  MsgBox "x(0): " & x(0).fieldName & chr(13) & "y(0): " & y.fields(0).fieldName & chr(13) 'oba objekty jsou změněné
  
  	y.fields(0).fieldName="zase obě" 'i pro y to změní vlastnosti obou objektů
	MsgBox "x(0): " & x(0).fieldName & chr(13) & "y(0): " & y.fields(0).fieldName & chr(13) 'obě vlastnosti jsou změněné
End Sub

Pitonyak má pro kopírování objektů jednoduchou ukázku, jenže je v tom rozdíl že to vytváří přes CreateObject. To možná bude ten důvod, že při obyčejném rovnítku se udělá kopie takto vytvořeného objektu.

Sub ExampleCopyAsValue
	Dim aProp1
	Dim aProp2
	aProp1 = CreateObject("com.sun.star.beans.PropertyValue")
	aProp1.Name = "Age" 'Set Name Property on one
	aProp1.Value = 27 'Set Value Property on one
	aProp2 = aProp1 'Make a copy -> zde se vytvoří kopie, převzalo to stejné vlastnosti, stačí si obě proměnné dát do Kukátka
	aProp2.Name = "Weight"'Set Name Property on two
	aProp2.Value = 97 'Set Value Property on two
	Print aProp1.Name, aProp2.Name 'Age Weight -> má to jiný vlastnosti, jde to vidět pěkně v Kukátku
End Sub

Jenže ta writerovská tabulka je pomocí CreateInstance a asi proto se prostě její polymorfizovatelný klon neudělá, neb to nemá jen vlastnosti ale jsou tam i různé metody, interface, listenery a služby (navíc některé jsou jen pro čtení), takže by jistě docházelo k různým konfliktům kdyby někdo dělal klony a měnil jen některé vlastnosti. Řekl bych, že velmi brzy by se našel nějaký filuta, který by zkusil něco jako oMachr=naklonuj(thisComponent) nebo ještě lépe oDrson=naklonuj(StarDesktop) :-).


Mně se povedlo udělat modifikovatelnou kopii objektu akorát když jsem natvrdo nastavil jeho konkrétní vlastnosti, taky jednoduše přes rovnítko ale fakt jednu vlastnost po druhý

	Type tVzor
		s$ i%
	End Type
Sub ukazkaKopieObjektu 'vytvoření kopie objektu
	dim o1 as new tVzor, o2 as variant
	o1.s="abc" : o1.i=123
	o2=kopie(o1)
	msgbox "o1: " & o1.s & o1.i & chr(13) & "o2: " & o2.s & o2.i
	o2.i=456
	msgbox "o1: " & o1.s & o1.i & chr(13) & "o2: " & o2.s & o2.i
End Sub

Function kopie(o as variant) as variant
	dim a as new tVzor
	a.s=o.s 'předat vlastnosti jednu po druhý
	a.i=o.i
	kopie=a
End Function


Nicméně velkou radost mám z metody setDataArray, o té jsem "netušil" (i když už jsem jí předtím viděl ale zapomněl na ní), ta zrychluje vyplňování tabulek výtečně, už jí využívám v Calcu když se snažím změnit rozkouskovaný datový soubor od vytvářeného fontu a donutit tak program FontForge udělat něco co vůbec neumí. Ještě to sice bude pár dní boj, ale snad se zadaří :-).


To EnumarableMap vůbec není špatné, neznal jsem to. Připomíná mi to trochu javascriptové asociační pole (tedy pole ve kterém jsou indexy řetězce -> např. pole["pozdrav1"]="ahoj";pole["pozdrav2"]="cau";). Já včera narazil na to, že normální array() má omezenou velikost, ale povedlo se mi to snad vyřešit takto:

Sub velkeArray 'zvětšování pole když nestačí
	dim oProps(0) as new com.sun.star.beans.PropertyValue 'do tohohle budu vkládat pole jedno po druhém když mi dojde potřebná velikost normálního array daná dále v iLimit
	dim i&, j&, iLimit& 'potřebný iLimit pro vyhovující velikost normálního array je asi nejlepší vždy odzkoušet na zpracovávaných datech
	iLimit=5 '16368 'tolikátý index mi pro :pole(iLimit) as string: ještě fungoval když jsem načítal řádek po řádku ze souboru jež měl 23 tis. řádků, při větším čísle se v každém dalším prvku objevil vždycky řádek první
	dim pA(iLimit) as string 'pomocné pole které budu využívat
	dim iKolik& 'kolikáté podpole v oProps budu vytvářet
	dim sNazev$
	sNazev="PODPOLE" 'prefix pro názvy jednotlivých podpolí v oProps
	iKolik=0 'kolik podpolí budu mít v oProps
	j=0 'počítadlo indexů pro pomocné pole
	for i=0 to 11 '12 'dvanáctka pro iLimit=5 vytvoří již 3 podpole
		pA(j)="hodnota" & i 'hodnota do pomocného pole
		if j=iLimit then 'jsem na limitu počtu indexů
			j=0
			oProps(iKolik).name=sNazev & iKolik : oProps(iKolik).value=pA() 'vložit do oProps již naplněné pomocné pole pod jménem PODPOLEčíslo
			redim pA(iLimit) 'vynulovat pomocné pole
			iKolik=iKolik+1
			redim preserve oProps(iKolik) as new com.sun.star.beans.PropertyValue 'přidat do oProps další podpole
		else
			j=j+1
		end if
	next i
	if j<>0 then 'když má zbylé pomocné pole méně prvků než iLimit tak ještě vytvoří podpole v oProps
		redim preserve pA(j-1) 'zkrátit pomocné pole na skutečný počet prvků
		oProps(iKolik).name=sNazev & iKolik : oProps(iKolik).value=pA() 'poslední podpole do oProps
	else
		redim preserve oProps(iKolik-1) 'když to vyšlo přesně na iLimit tak odstraní poslední prázdné podpole z oProps
	end if
	msgbox oProps(1).value(2) 'no a zde je nějaký prvek z toho vytvořeného multiPole
End Sub

#11 Re: Calc » Jaký font je reálně použit místo chybějícího? » 7. 11. 2019 22:19:24

Pro aktuální buňku v Calcu stačí pro výpis fontu toto makro

Sub vypisNazevFontu 'vypíše názvy fontů aktuální buňky Calcu i názvy fontů na konci textu v buňce
	dim oBunka as object, oCur as object, sEnt$
	sEnt=chr(13) & chr(13) 'odřádkování pro msgbox
	oBunka=thisComponent.currentSelection 'aktuální buňka
	oCur=oBunka.createTextCursor 'kurzor v buňce
	oCur.goToEnd(false) 'na konec buňky
	'xray oBunka
	msgbox("NORMÁLNÍ: " & oBunka.CharFontName & " × " & oCur.charFontName & sEnt &_
			"asijské: " & oBunka.CharFontNameAsian & " × " & oCur.CharFontNameAsian & sEnt &_
			"komplex: " & oBunka.CharFontNameComplex & " × " & oBunka.CharFontNameComplex ,16,"FONT: buňka × konec textu v ní")
End Sub

Pokusný soubor s fontem aaa (je jím nápis aaa v buňce A3) kdyžtak zde https://uloz.to/file/5vfw6kzFs1oN/aaa-ods, info se spouští z menu OVLÁDÁNÍ. Ale název fontu kterým se nahradí nepřítomný font jsem nikde nevyXRayoval - řekl bych že to substituování fontů bude nejspíš záležitost operačního systému a nikoliv jednotlivých programů.

#12 Re: Calc » Jak importovat text z calcu do writeru a zároveň ho naformátovat » 5. 11. 2019 18:27:44

Neutr: Prosím zveřejnil byste váš výtvor nezaheslovaný nebo alespoň kód na to vkládání tabulek?

neutr napsal(a)

Správným řešením by bylo nastavení parametrů pro objekt vlastní tabulky a tu potom pouze replikovat. To je technologie která se v Basicu moc nepoužívá – deklarovat objekt jako „TYPE". Potom se mění pouze název (inkrementací čísla) a obsah řádků.

Vysvětlivky do kódu skutečně psát nemusíte, ani to nijak krášlit, tak jak to prostě je by mi to bohatě stačilo, já už se tím prohrabu -> jsem zvyklý se různě prodebugovávat doplňky a třeba je i modifikovat pro nějaké své specifické potřeby. Nebo pokud to přeci jen nechcete zveřejňovat tak bychom se domluvili na poslání třeba emailem? (Nechci nikde uveřejňovat svou adresu kvůli spamům, jsem rád že mi jich chodí dost málo, vy ji tu máte tak bych vám kdyžtak svůj email poslal na váš).

Dosud jsem netušil že je vlastně něco takového možné natož že by to mohlo značně zrychlit vytváření dokumentu :-). Já znám jako optimalizaci v podstatě spíše pouze osvědčené skrytí okna aby to nezpomalovalo vykreslování. Pro mé účely v rámci transkripčního doplňku by se mi to velmi hodilo, také v něm generuji tabulky a jakékoliv zrychlení je žádoucí. Navíc mám pocit, že takto to půjde urychlit nejen s tabulkami ale například i s rámci - a to by se mi opravdu hodilo -> jejich použití mám jako jednu z možností když jsou v transkripci dvě varianty -> tak tam vložím malý rámec a vepíši do něj ty možnosti nad sebe. No a někdy se v textu těch rámců vyskytne dost a zpomalení je opět znát.

Kdybych třeba v budoucnu psal nějaké makro a hodil by se ten váš postup do toho, tak bych tam ten postup již dal - ovšem přizpůsobený dané problematice a mnou popsaný, žádné tupé Ctrl+C/V hrubého stehu :-). Ono na takovouhle optimalizaci se člověk jen tak někde nedostane a věru bych ji moc rád viděl a dále ji používal.

Ale i s tím nejdřív si to načíst celé do pole je to dobré, fakt mě to v tak velkém použití nenapadlo. Byť tohle v Basicu umím, takže budu využívat. I ten nápad vložit tabulce o řádek víc a první smazat než jej měnit je dobrý, připomíná mi to trochu optimalizace v asembleru kdy třeba rychlejší je neskočit než skočit. Věru každá finta jak něco keplového jednoduše urychlit je žádoucí :-).


S nějakými starými doplňky co stále fungují nebo po nějaké malé úpravě mohou fungovat nějaké zkušenosti mám, rozšíření od T. Bílka či J. Pasteriaka jsou fakt vynikající. Ale i třeba menší jsou mnohdy dobré - takový španělský BasicIDETools (primárně pro AOO) si nemohu vynachválit -> to hromadné za/od-komentování řádků v Basic-editoru je prostě super, stejně jako možnost vkládat nějaký předdefinovaný kód. Pro to aby jeho verze 1.3 chodila i v Libre stačilo po rozzipování smáznout jeden tag z addons.xcu a bylo hotovo. Navíc když jsem koukal jak to dělá, tak je to jen v podstatě Ctrl+X, vyndat ze schránky do nějaké proměnné a tu zpracovat, dát jí znovu do schránky a Ctrl+V. Jen tenhle postup by byl na pěkný díl seriálu.

Nebo TemplateCharger, psalo mi to že nějaká fce je deprecated a stačilo najít v Libre SDK manuálu tu novou fci a nandat do ní tuším jeden parametr navíc a bylo hotovo.

Z Xraye jsem nedávno sosal jak se detekuje druh proměnné pomocí createUnoService("com.sun.star.reflection.CoreReflection"), ani nevím jak bych se tuhle detekci měl pokusit najít na webu, když jsem tu unoFci neznal.   


To vytváření určitého "manuálu" s makry chci dělat, neb to pro mě začíná být už i určitou nutností :-). Za asi 3 roky mám uložených pár stovek Basic návodů různě z webu a když něco hledám, tak už to začíná být docela problém se tím všelijak prohrabávat (přičemž gůglit by to bylo ještě horší, gůgl už ty výsledky vyhledávání fakt hodně změnil). A navíc si spoustu věcí beztak nezapamatuju, takže třeba i pro kopírování přes getTransferable si musím najít ten kousek kódu (i když jsou to asi jen 4 řádky) a CtrlCV.

Pro zajímavost: před pár měsíci jsem si nechával vytisknout samolepky na klávesnici (neb potřebuji cs, ar a en znaky) a v tiskárně mi obsluha říkala, že ty co mačkám nejčastěji se mi nejdříve ošoupou. Neošoupaly, přestalo lepit lepidlo jak mělo a začaly se pod prstem posunovat -> a byly to C a V, včera jsem je měnil, neb se mi na vytisknutou samolepící A4 vešly tři kopie :-).


Také mě napadlo že bych něco mohl psát právě i jako seriál na portál, ale nevím, jak moc je to na portálu zautomatizované, jestli by stačilo udělat to třeba v nějakém předdefinovaném odt (šabloně) a portál by si to sám převedl do potřebného html, nebo je to prostě složitější a musí se něco ručně zadávat. Zmiňoval jste Wiki, takže počítám že dost růčo. Já nemám internet a na větší onlajnování se můžu vykašlat, beztak mě to nebaví. Nicméně beztak by to mělo smysl kdyby toho bylo asi víc, nechtěl bych udělat jen pár nadšených prvních dílů a skončit. Ale i kdyby to nebylo na seriál, do odt/pdf (alá právě Pitonyak aspol.) to dávat chci. Ale trochu jinak než jak to je třeba právě v Pitonyakovi nebo v Malých makrech J. Pasteriaka. Nestojím o obsáhlé popisování spíše jednoduchých věcí a odmávnutí či až ignorování mnohem složitějších témat. Také není úplně vyhovující dávat tam hotové příklady na konkrétní zpracování dat, neboť nějaký potřebný základní algoritmus si pak z toho člověk musí vyseparovat, což také může být zbytečně pracné. 

Začal jsem ukazatelem průběhu s tlačítkem Zrušit, vše čistě vytvořené makrem -> neb ten využívám každou chvíli a nebavilo mě v Basicu dělat dialogové okno ručně. Takhle už je to jen o zavolání jedné fce :-). Ještě to však musím zapracovat právě do vznikajícího dokumentu. Dále se asi vrhnu na to co jsem zmínil o doplňku BasicIDETools a toho jak si vkládat vlastní kód do Basic editoru makrem, neboť třeba vkládaný kód pro různé Msgboxy též myslím dokáži o něco lépe :-).


Poslední dobou mi začíná připadat, že Libre se naprosto soustředí na to, že to je prostě "kancelářský balík" a takovým chce navždy být. Takže určitá "firemní struktura" se všemi negativy které to má v případě dalšího pokračování jakožto vyloženě kancelářské aplikace je od toho asi neoddělitelná, byť je to ke škodě. Ono nějaké angažování se v takové "struktuře" (a je jedno jestli firemní, armádní či institucionální) má pro člověka jednu značnou nevýhodu -> jedinci v tom se angažující si podle mě dávají za právo použít agresi když se jim to prostě hodí (a skutečně to tak dělají, ono i přehlasování a  musení se prostě podrobit výsledku hlasování je prostě agrese) -> a to naprosto koliduje s mou vírou. Ti co si dávají právo používat agresi (v jakékoliv formě) když se jim to prostě hodí, tak ať si sami jdou šlápnout na hrábě se hřebíkem, já se bez nich rád obejdu :-). Navíc Libre je spíše anglofonní projekt a hlubocí zainteresovanci v něm nepřemýšlí v češtině, takže vysvětlovat jim že něco je mnohem těžší či obsáhlejší než jak si usmysleli či jak se jim jeví, nebo že to fakt není tak naleštěný jak to mnohdy propagují, se setkává spíše s nárazem než s přijetím. Naučit se pro komunikaci pořádně anglicky beztak nepomáhá, rozhodně nebývá zvykem chápat tak do hloubky; občas mám u cizinců i pocit, že když se nad něčím začnou hluboce zamýšlet jak by se nad problematikou notně zamýšlel zdatný český kutil, tak se jim začne hroutit jejich svět. A co se zhrouceným tuňťou, že :-)? Takže mě tak napadá, že se v neodpovídající naleštěnosti nejspíš utvrzují a udržují schválně, doufaje že zhroucení se jim prostě nějak vyhne. Dle mně marný, ale důkaz pro to nemám :-).

Nicméně já mám Libre rád z jiného důvodu a to z důvodu toho, že relativně jednoduchým programováním se dá udělat spousta věcí, neboť Libre má prostě v podstatě velmi vyvinuté "vývojové prostředí" -> je fakt skvělý moci pro různý předělávky konfiguráku využít třeba buňky v Calcu, potřebně si je přeházet a zapsat zase do konfiguráku. Nebo fakt bych nechtěl vidět, co všechno bych se musel naučit naprogramovat, kdybych chtěl udělat třeba v C++ to co vytvářím v Libre -> třeba převést arabský text na křivky, rozkouskovat je na jednotlivá písmena, obarvit dle požadované transkripce určitá písmena - a udělat z toho pdf i html kód s původním textem, barevnou svg verzí textu a barevnou textovou transkripcí k tomu. V Libre na tom pracuji porůznu již asi 3 roky, kdybych to tu dobu programoval v něčem jiném, tak už bych asi nebyl schopen komunikovat s nikým z lidí, kolik těžkého programování bych pro to musel zvládnout - jestli bych to vůbec přežil :-). Ale jak píšete, bez portálu AOO (a hlavně jeho fóra) by to fakt nešlo. Tomu pythonu jsem nijak na chuť nepřišel a vlastně ani nevím, proč by měl být nějakou výhodou. V něčem někde možná jo, ale konkrétně fakt nevím v čem ani kde. A třeba z C++ už mě před lety dost bolela hlava a to už fakt ne, to ten Libre Basic je fakt mírumilovnej :-).

#13 Re: Calc » Jak importovat text z calcu do writeru a zároveň ho naformátovat » 4. 11. 2019 21:21:26

Neutr: Spouštět to z Writeru jak jste psal mi přišlo spíše nešikovný, neb uživatel by beztak musel nějak zadat ten soubor Calcu s daty, pro což by asi nejjednodušší bylo otevřít mu dialog s výběrem souboru, ale to mi přišlo jako již zbytečně uživatelsky otravný a zesložiťující. Byť jak to předávání řízení popisujete tak to zní zajímavě, ale neumím si nějak předtavit, že by to v nějakém takovém případě skutečně bylo víc přínosný než složitější a pracnější. Ale vy to třeba využijete i jinde a alespoň už s tím tedy máte zkušenosti :-).


Já nad tou mou ukázkou strávil asi 5 hodin, ale to díky tomu že jsem různě hledal a testoval a vymýšlel jak nastavit ty vlastnosti tabulky. V rámci svého vyvíjeného superbastlu jsem se na to vkládání a formátování tabulek makrem tak jako tak chystal, tudíž když se to vyskytlo, tak jsem rád, že jsem to dal dohromady. Ono třeba na to nastavování barvy rámečků přes ty rodičovské elementy jsem si kdysi musel přijít sám, skutečně jsem to nikde když jsem to asi před dvěma roky potřeboval nenašel. Teď mi dala zabrat celá tabulka, neb ta se musí nastavit ještě o rodiče výš. Ta kontrola na 2000 řádků vznikla tak, že když jsem kopíroval ta vaše data, tak jsem najel myší na písmeno A a přetáhl ji přes B na sloupec C, tudíž se označily tři sloupce; pak Ctrl+V které trvalo nějak nezvykle déle a když jsem to pustil, tak to bylo nějak hodně pomalý -> a pak jsem zjistil že to nakopírovalo do všech řádků který Calc umožňuje. Takže pak jsem tam dal tu kontrolu :-). 


Poslední dobou se mi ohledně maker ale občas stává, že basic-bibli A. Pitonyaka dochází (i došel) dech a na webu také k tomu co bych k makrům potřeboval třeba nic, nebo třeba něco co musím všelijak upravit a doladit, aby to šlo použít třeba komfortněji. Takže se chystám začít vytvářet nějaký vlastní soubor s makry alá A. Pitonyak, ale s pokročilejšími možnostmi maker a optimalizovanými. Někdy je fakt hroznej opruz hledat nějaký věci k makrům a najít víc ukázek na několika webech/fórech a zjistit, že autoři to mají na jedno brdo, třeba nepraktické či s chybami nebo zbytečně složité - s čímž se český koumák rozhodně nemůže spokojit :-). Mít však různý spolehlivý řešení daný dohromady podobně jak to je v Andrewově knize je fakt super.


K čemu ty tabulky vlastně autor chce mě vůbec nenapadalo a vaše vysvětlení zní docela pravděpodobně (dnes mě napadly jakési vystřižené kartičky pro nějakou soutěž třeba pro děti). Ale zarazilo mě, že i přes jasnou výzvu dal autor prostě jen drobnou ukázku výstupu (ve které bylo nejisté dtp a zatajil i ony otázky a odpovědi - škoda, mohl jsem se možná něco málo dozvědět, lorem ipsum mě fakt nebaví, přežloutenkovaný oř vyúpěvší nějaké ty nostalgicko-kolektivizační trylky bývá lepší). Já po tomhle příkladu dospěl k závěru, že pokud autor příspěvku v podstatě nekomunikuje či komunikuje blbě, tak se mu skutečně dále nemá cenu věnovat. Kdyby byla jasná ukázka i těch vstupních dat, tak se nejspíš dala lépe udělat i nastavení toho sloupce dtp.

Nicméně je to fórum a nikoliv řešení pro-jednoho, takže i když nejspíš nedojde na zápis VYŘEŠENO, tak je možné, že někomu vytvořené ukázky či části z nich někdy pomohou. Ono i těch vašich 5000 tisíc řádků na různé testování vůbec není k zahození, ty čtyřpísmenné kombinace vypadají unikátní (neopakující se) :-).

#14 Re: Calc » Jak importovat text z calcu do writeru a zároveň ho naformátovat » 4. 11. 2019 09:44:08

Dostal jsem se k tomu včera k večeru, doladil dnes ráno. Zde je má ukázka https://uloz.to/file/RLtYneUfroYV/calc- … ru-kl1-ods. Též se spouští z menu OVLÁDÁNÍ. Je to rychlejší tím, že se to pustí v neviditelném okně, přičemž ve stavovém řádku Calcu se zobrazuje průběh zpracování (aktualizuje se po deseti tabulkách). Pro buňky v těch tabulkách jsou navíc vytvořené odstavcové styly TAB_dtk, TAB_otazka a TAB_odpoved, tudíž změnou stylu (F11) se dají snadno změnit vlastnosti písma ve všech tabulkách. Tabulky také mají šedý rámeček jako v dané ukázce.

Když jsem testoval rychlost, tak neutrova ukázka mi proběhla za 12m:19s. Má ukázka s neutrovými daty (5000 řádků) za 4:01. Těch mých 1200 řádků mi to ztabulkovalo za 13 vteřin.

Neutr: jelikož jste zamkl to makro tak jsem se na to nemohl mrknout, ale jak prosím děláte to neustálé viditelné vykreslování nového obsahu (tedy že se vám dokument pořád posunuje na každou nově přidanou tabulku)? Skáčete po přidání tabulky a prázdného řádku s viditelným kurzorem na konec dokumentu? - viditelnyKurzor.goToEnd(false)

#15 Re: Calc » Jak importovat text z calcu do writeru a zároveň ho naformátovat » 2. 11. 2019 11:17:00

neutr napsal(a)

ponechám font 12 (Calc implicitně používá 10)

.
Možná by bylo lepší tam nedávat natvrdo vlastnosti textu (velikost fontu 12 apod.) ale udělat pro ty buňky nějaký styl, bylo by to pohodlnější i pro případnou pozdější editaci těch tabulek.
Já se k tomu přes víkend nedostanu, možná až v pondělí, ještě nevím

#16 Re: Calc » Jak importovat text z calcu do writeru a zároveň ho naformátovat » 1. 11. 2019 11:07:16

Rozhodně to chce ukázku jak vstupního sešitu tak výsledného dokumentu. Jestli třeba v dokumentu potřebujete jeden řádek tučně, druhý kurzívou, třetí barevně atd. tak to je pro makro ještě celkem jednoduché.
Kdybyste však potřeboval částečné formáty řetězců (např. pouze jedno konkrétní slovo v řádku tučně, jiné jinak atd.), tak už je to složitější. No a nejtěžší je části řetězců správně naformátovat když části pro formáty jsou dané regulárními výrazy. 
Provedení toho částečného formátování může být při objemném souboru také dost pomalé, takže i na pracovní stanici to klidně může zabrat několik desítek minut (ale i hodin), na pomalejším stroji to bude nejspíš v mnoha hodinách. Dá se to o něco zrychlit když se to dělá po částech v nějakém tempu, ale jak mají zpracovávané soubory několik mb, skutečně to může být až i nečekaně náročné. 

Takže si chce dopředu spíše dobře promyslet co s tím skutečně chcete udělat a připravit si i nějakou mnohem menší testovací ukázku kde bude možno otestovat všechny potřebné varianty - než aby se to celé poněkolikáté zase pustilo přes noc a zase v tom výsledku ráno byly nějaké chyby :-).

#18 Re: Calc » podmíněné formátování - VYŘEŠENO » 15. 10. 2019 10:29:26

V těch podmínkách musí být správně znak $ v adrese buněk K a H (např. $K1, $H1) aby to barvilo celý řádek. Příklad zde https://uloz.to/file/S1m670n6Hktu/podminky-kl1-ods

#19 Re: Calc » Jakou funkci použít » 2. 10. 2019 09:31:05

Jestli to chápu správně tak potřebujete, aby pokud budou shodné symboly v tab1 i tab2, tak aby do tab2 nakopíroval čísla k těm shodným symbolům; a v případě že symboly shodné nebudou, tak aby v tab2 ponechal původní hodnoty.


Mě napadá použít pro ty původní hodnoty z tab2 buď pomocný sloupec (vytvořený prostě CTRL+C/V) ze kterého si podmínka IF dosadí původní hodnotu když nebude úspěšný VLOOKUP. Případně by se do toho sloupce v tab2 musela zadat do každé buňky do vzorce IF ona původní hodnota, což je na to zapsání vzorců poněkud pracnější, i když to lze vytvořit např. s pomocí programu PSPad, aby se to nemuselo do každé buňky zadávat zvlášť.


Ukázkový příklad s tím pomocným sloupcem https://uloz.to/file/wBgWlXSXwXJv/vlook … loupec-ods, v podstatě tam jde jen o to zapsat správně podmínku se znaky $, aby se dala jen přetáhnout za růžek do dalších buněk.

=IF(ISNA(VLOOKUP(E2;$A$2:$B$6;2;0));I2;VLOOKUP(E2;$A$2:$B$6;2;0))

V případě původní hodnoty "natvrdo" by podmínka byla změněná třeba jen takto, ale musely by se do každé buňky dostat právě ty původní hodnoty.

=IF(ISNA(VLOOKUP(E2;$A$2:$B$6;2;0));původníHodnota;VLOOKUP(E2;$A$2:$B$6;2;0))

Jen ještě pozor na ty použité symboly, ale nekolidovaly s reg. výrazy nebo zástupnými znaky a nemuselo se nutně přepínat nastavení Calcu v Nástroje/ Možnosti/ LibreOffice Calc/ Výpočty -> Povolit zászupné znaky ve vzorcích, Povolit regulární výrazy ve vzorcích, Vzorce bez zástupných znaků a regulárních výrazů. (Jinak popsáno též v tom příkladu)

#20 Re: Calc » VLOOKUP vrátí špatně hvězdičku - VYŘEŠENO » 1. 10. 2019 18:46:15

To už jsem si též všiml. Ale říkal jsem si, že v nějakém konkrétním případě bych mohl udělat pomocnou testovací buňku a tam otestovat pomocí IF zda se liší vrácené výrazy pro * a \* a podle toho třeba ji třeba podbarvit nebo napsat upozornění.

Ty zástupné znaky to však komplikují více, takže raději nebudu používat indexy co by mohly být regulárama (co mohou být ty zástupné excelovské znaky ani nevím), ale nějaké osvědčené jednoznačné, typicky třeba písmenoČíslo.

#21 Re: Calc » VLOOKUP vrátí špatně hvězdičku - VYŘEŠENO » 1. 10. 2019 18:19:49

Jasně :-), že mě to nenapadlo hned když s reguláry dělám každou chvíli :-). Funguje.

#22 Re: Calc » VLOOKUP vrátí špatně hvězdičku - VYŘEŠENO » 1. 10. 2019 18:06:06

Díky, funguje. Ale nejde to přeci jen ošetřit nějak přímo ve vzorci aby to jako regulár nebral, aniž bych musel měnit nastavení Calcu? Přijde mi to trochu nepohodlný kdybych někomu poslal sešit s VLOOKUPama a musel ho upozornit na to, aby si přenastavil Calc.

#23 Calc » VLOOKUP vrátí špatně hvězdičku - VYŘEŠENO » 1. 10. 2019 17:14:28

kamlan
Odpovědí: 6

Funkce VLOOKUP nevrací správně hodnotu z matice když je vyhledávaným indexem hvězdička *. Víte někdo důvod nebo jde o chybu?
Ukázka zde https://uloz.to/file/kcsuw2oDsBpd/vlook … zdicku-ods

#25 Re: Calc » Jak vyplnit tabulku dle kriteria v prvním sloupci dle druhé tabulky » 27. 9. 2019 22:03:25

neutr: jiný postup pro barvy: Já na barvy chodím většinou přes PSPad a konkrétně Nástroje/ Kapátko -> PSPad se poté sám minimalizuje takže se objeví program pod ním (případně přes Alt+Tab se dá dojít k požadovanému programu) ze kterého je třeba vysosnout barvu a pak stačí tím PSPadovým křížkem najet na požadovanou barvu a hned se objeví v hexa hodnotách. Po kliknutí se zkopíruje do PSPadu a pro desítkové RGB hodnoty lze hned použít Nástroje/ Zobrazit barvu.


neutr napsal(a)

Po zkopírování vložíme do kolonky HTML barvy která je už na základní kartě BARVA. Nenechte se odradit. Musíte začít od prvního místa a vkládat znak po znaku (schránkou to tam nedostanete a když začnete odjinud půjde Vám hlava kolem).

Při přidávání vlastní barvy vkládat to do pole HTML ze schránky lze, stačí to tam vybrat přes Ctrl+A a pak vložit Ctrl+V. Obrázek zde https://uloz.to/file/QRUCGcWE8L5D/vlastni-barva-png. Drobná nevýhoda je ta, že ty vlastní barvy to přidá až na konec palety, z toho důvodu pro barvy rovnou edituji soubor standard.soc (viz. zde https://forum.openoffice.cz/viewtopic.php?id=5664 ) abych pro vlastní barvy nemusel rolovat kolečkem myši až na konec palety :-).


Ony předdefinované barvy v paletách mívají enormní nevýhodu a to že se jejich složkové hodnoty obměňují v nějakých pravidelných intervalech - např. první barva je RGB(10,10,10) druhá RGB(20,10,10) pak RGB(30,10,10) ... RGB (10,10,20) atd. -> a výsledek je ten, že v takové pravidelnosti složek se ty barvy při více barvách k sobě moc nehodí. Lepší bývá si barvy nadefinovat sám a vyhnout se tomu pravidelnému rozestupu složek, což ale může být též pořádný vopruz -> těch prvních 5 řádků v paletě v tom ukázkovém obrázku jsem si udělal pro barvení mé arabštiny a vyladil jsem to do podoby kdy se mi ty barvy podle mě k sobě hodí, až po několika týdnech. A povedlo se mi to odladit až tak, že jsem to všechno naházel právě do html a odlaďoval to svou starou javascriptovou utilitkou na barvy https://uloz.to/file/3UHPxTWmeAVc/colorcatcher-zip :-).

Kdysi ta utilita byla na Slunecnici a možná tam stále je, ale měla tam jednu chybu a přepínala se nežádoucně na barvu pozadí i když radiobox byl třeba na barvě textu. Ale jelikož jsem tehdy svůj tehdejší web zrušil, tak jsem to tam již neaktualizoval.

Zápatí

Používáme FluxBB