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

#1 Re: Calc » Lámání textu v buňkách » 14. 11. 2024 20:00:19

Nakonec jsem udělal takovou jednoduchou funkci, ale nicméně, není to to, co jsem chtěl, neboť mě šlo o blok. Níže uvedená funkce funguje jen při zarovnání na strany nebo na střed (neumí se roztáhnout mezery). Ale i tohle možná někdy využiju, je to docela šikovná funkce, funguje nezávisle na aktuální šířce sloupce, což se může hodit.

Function Sekvence (stext as string, letters as integer) as string
	Dim Result As String
  	Dim StartPos As Long
  	Dim CurrentPos As Long
  	Dim Sentence as integer
  	
  	Result = stext
  	CurrentPos = 1
  	StartPos = 1
  	Sentence = letters

	do while CurrentPos <> 0
		CurrentPos = InStr(StartPos, stext, " ")

		if CurrentPos = 0 AND len(Result) - Sentence > 0 Then
			CurrentPos = len(Result)
		end if

		if StartPos <= Sentence AND CurrentPos > Sentence  Then
			
			PrevPos = InStr(StartPos - 3, stext, " ")
			
			if PrevPos = StartPos - 3 Then
       				StartPos = StartPos - 2
       			end if
					
			Result = left(Result, StartPos - 2) & CHR(10) & right(Result, len(Result) - StartPos + 1)
       			Sentence = StartPos + letters + 1
       			StartPos = CurrentPos + 1

       		elseif StartPos < Sentence AND CurrentPos = Sentence Then
       		
 			if CurrentPos - StartPos  = 1 Then
       				CurrentPos = CurrentPos - 2
       			end if
       		
       			Result = left(Result, CurrentPos - 1) & CHR(10) & right(Result, len(Result) - CurrentPos)
       			Sentence = CurrentPos + letters + 1
       			StartPos = CurrentPos + 1

       		else
       			StartPos = CurrentPos + 1
       	
       		end if
		
	loop

	Sekvence = Result
End Function

EDIT: ještě by bylo super, pohlídat sirotky :-)
EDIT: sirotci vyřešeny. Blbě to láme poslední řádek, pokud to má zlomit před posledním slovem a text nekončí mezerou
EDIT: lámání posledního řádku vyřešeno :-)

#2 Re: Calc » Lámání textu v buňkách » 14. 11. 2024 17:49:15

Už si to začínám pomalu představovat, že by to šlo jako funkce. Nicméně já bych rád text zarovnával do bloku, takže odřádkování musí být skutečně pouze nový řádek, nikoli nový odstavec (jako ve Writeru Shift+Enter), což je asi znak char(13) = CR, ale zkoušim to a funguje to stejně jako char(10) = LF, takže se obávám že calc tohle prostě vůbec nebude umět.


EDIT: tak jsem myslel že by se to ještě dalo obejít přes nezalomitelné mezery char(255), ale to je v calcu taky nefunkční ... Nějak funguje jakýsi char(160), jenže to je stejně blbost, protože to se zase neumí roztáhnut tak jako normální mezera char(32), takže v bloku dělají pevné mezery ještě horší paseku


EDIT: myslím že vytvořit v Calcu pevný text v bloku v podstatě nelze, nicméně zjistil jsem že v tiskovém náhledu to je pořád stejný a stabilní, takže v případě takové polosazečské práce, jak jsem teď dělal, s větším množstvím textu, je zapotřebí čumět často do tiskového náhledu a nespoléhat se na aktuální zobrazení listu.

#3 Re: Calc » Lámání textu v buňkách » 14. 11. 2024 16:36:30

Nicméně stále je tu ten problém, že když zadám tvrdá zalomení do textu, tak v některém zobrazení ten řádek přeteče a zalomení se vlastně ocitne až na dalším řádku, takže možná to vlastně není úplně hotové řešení - resp. problém skákání řádků při různém zobrazení přetrvává.



Edit: Zkusil jsem jen prostě ručně zadat zalomení a je tu nevýhoda že nefunguje zarovnání do bloku - tvrdý konec se nechává volně - řádek se neroztáhne do bloku, což já tedy chci - takže to je slepá cesta. Jedině že byse dal v calcu zadat "měkký konec" jen odřádkování nikoli odstavec, což nevím ani ručně jak na to.

#4 Re: Calc » Lámání textu v buňkách » 14. 11. 2024 16:06:31

to neutr - zajímavé, to mě fakt nenapadlo. Musí to mít tedy i reciproční funkci - tedy vymazat zadaná tvrdá zalomení, aby to šlo editovat. A při novém spuštění nejdříve vymazat stávající zalomení a udělat nová. Každopádně pokud byste něco měl na skladě maker, tak bych to bral, sám nevím úplně jak bych na to šel.

#5 Calc » Lámání textu v buňkách » 12. 11. 2024 08:38:50

ludviktrnka
Odpovědí: 7

Ahoj, nemáte někdo nějakou fintu na problém, kdy v buňce je delší text (200 a více znaků) a v každém zobrazení (tzn. v různých % velikosti obrazovky) a také při tisku resp. exportu se text láme v jiných místech. Tzn. např. při zobrazní 120% text z buňky přetéká, ale při zobrazení 140% se text do buňky vleze. V jiné buňce jiný text to má zase naopak (ve 140% přetéká a ve 120% je v pořádku). V tisku (exportu) je to pak také všelijak. Existujel nějaká finta jak ukotvit text (tedy jinak než tvrdým odřádkováním, to se mi taky nelíbí - text potřebuji editovat, tohle by byla hrozná práce) tak aby se odstavec jevil stále stejně? (Writer, pokud vím, tento problém nemá) (navíc text mám v buňce přidaný pomocí vzorce, což může být další komplikace. nevím. Pevné odstavce i pevné mezery vzorec přebírá ze zdroje, v tom by problém nebyl)

#6 Re: Calc » Makro pre platobný QR kód » 8. 10. 2024 15:13:39

... jinak tedy z M-bank mi chodí platby provedené přes QR kód úplně běžně (desítky měsíčně), takže chyba bude nějaká dost specifická. Ale moje platby jsou v CZK a neuvádím splatnost, ani parametr RN ani X-KS (jeden z těchto čtyř parametrů nebo jejich kombinace bude asi pro aplikaci m-bank nějak problematická). Obecně to ale máte určitě správně a samotný obecný generátor QR kódu, už s tím nic nenadělá. Já jsem přešel na ofline řešení z důvodu nespolehlivosti online free systémů - to musí člověk furt hlídat, zda to ještě funguje, nebo je to pomalé a nebo jr potřeba si zaplatit.

#7 Re: Calc » Makro pre platobný QR kód » 8. 10. 2024 12:05:15

ještě bych zkusil pro m-bank změnit měnu na CZK (možná není kompatibilní uvedení X-VS a X-KS dohromady s měnou EUR jak vyplývá z dokumentace.)


(resp. odmazat X-VS a X-KS a nahradit zprávou, nevím jak to máte na Slovensku, ale obecně Europlatby tuším VS neobsahují - nejsem si jist, ale může to být ten problém)



validátor uvedený zde: https://qr-platba.cz/pro-vyvojare/validator/ označuje váš kód jako v pořádku, takže problém je skutečně někde hluboko

#8 Re: Calc » Makro pre platobný QR kód » 8. 10. 2024 11:26:56

ještě zkuste odmazat hvězdičku na konci


SPD*1.0*ACC:SK9183300000002702561821+FIOZSKBAXXX*AM:120.50*CC:EUR*RN:LUGESA PLUS*DT:20241030*X-VS:202410036*X-KS:308

#9 Re: Calc » Makro pre platobný QR kód » 8. 10. 2024 10:37:19

určitě musíte dodržovat zápis - např DT:30.10.2024 je určitě špatně, což nutně neznamená, že jej některá aplikace nedokáže přečíst,.


EDIT: správně je DT:20241030 --- myslím že to je ten jediný problém vašeho kódu, teď už Vám to bude chodit perfektně :-)

EDIT II: při vší úctě, psát datum splatnosti do platebního QR kódu je poněkud kontraproduktivní, většinou chci aby mi přišly peníze hned a případnou úpravu splatnosti nechávám na klientech

#10 Re: Calc » Makro pre platobný QR kód » 8. 10. 2024 10:34:50

dokumentace k QR oplatbě je zde: https://qr-platba.cz/pro-vyvojare/specifikace-formatu/
Já používám pouze základní parametry a IBAN pouze v základní formě. Neplatný kód mi lidi hlásili jen když jsem neměl dobře ošetřené zakázané znaky ve zprávě, jinak to vždy funguje. Ale nevím jak je to se zahraničními platbami, zda tam není potřeba něco navíc. Každopádně žádné kódování není potřeba, základní texttový řetězec je tak jak jste ho napsal SPD*1.0 .. atd. to je obsahem QR kódu, není potřeba žádné šifrování.

#11 Re: Calc » Makro pre platobný QR kód » 7. 10. 2024 20:41:01

Suubor s makrem pro generování platebního QR kódu jsem nahrál zde: https://www.dropbox.com/scl/fi/5cugtwmq … 947av&dl=0

Nutný je SimpleCodeGenerátor zde: https://www.nirsoft.net/utils/qr_code_generator.html

Jde vlastně jen o sestavení toho kódu, pak se pomocí shell spustí generátor a nakonec se umístí obrázek. Před dalším generováním se staré QR nejdříve smaže.

#12 Re: Calc » Makro pre platobný QR kód » 6. 10. 2024 16:58:42

Používám makro pro generování platebního QR kódu na faktury za použití externího programu SimpleCodeGenerator. Pokud potřebujete generovat QR kód v cyklu tak Vám mohu toto poskytnout. Jednorázově je asi lepší použít vestavěný nástroj (možná to jde i makrem v cyklu - nevím). Vygenerovaný obrázek je pak potřeba umístit pomocí "com.sun.star.drawing.GraphicObjectShape"

Sub GenQrCode (qrkod as string, adresa as string, AdresaProgramu as string)

REM makro vytváří QR kód generovaný programem SimpleCodeGenerator.exe,
REM který je zdarma ke stažení zde: https://www.nirsoft.net/utils/qr_code_generator.html
REM obrázek s QR kódem je uložen do počítače a poté umístěn do Listu v přesné velikosti a na přesné souřadnice
REM qrkod-obsahuje text pro zakódování, adresa - umístění budoucího souboru obrázku, AdresaProgramu - umístění simplecodegenerátoru

 shell(AdresaProgramu, 0, "/Save '" & qrkod & "' '" & adresa & "' 10", True) 
  
end sub

#13 Re: Calc » Jan definovat formát ve výsledcích kontingenční/pivot tabulky? » 21. 7. 2024 07:48:57

Já to dělám oklikou. Kontingenční tabulka (KT) mi slouží jako datový zdroj pro výstupní (tiskovou) tabulku, kterou si nafarmátuji dle vlastních potřeb a buňky navážu jednoduchými vzorci na KT. Je to sice něco navíc, ale je to spolehlivé. (Po mnoha pokusech s formátováním KT už to dělám jenom takto)

#14 Re: Calc » Nejde exportovat CSV » 27. 5. 2024 09:03:52

Při otvírání CSV může dojít k určité "nevratné" deformaci dat. Proto je potřeba nejdříve zjistit formáty dat v původním souboru, poté nastavit stejné pro jednotlivé sloupce v dialogu při otvírání. Po této operaci by při následném ukládání mělo být vše v pořádku. Původní a nový soubor lze pak jenoduše srovnat v obyčejném textovém editoru (ve WIN je např. poznámkový blok, který data zobrazí tak jak jsou), v případě rozdílů je zapotřebí přehodnotit nastavené formáty sloupců a nastavit znovu jinak.

#15 Re: Calc » Vložení obsahu vč. formátu z jedné buňky, do textu jiné buň. VYŘEŠENO » 12. 2. 2024 19:32:57

Jen pro úplnost, nespočívá to v CONCATENATE, ale v TEXT. Funguje: ="Objednatel se zavazuje zaplatit sjednanou cenu ve výši "&TEXT(A1;A2)&" + DPH v sazbě platné ke dni vystavení konečného daňového dokladu."
Obsah buňky A2 = "0 000 kč" (nebo jakkoli jinak) - umožňuje měnit formát hromadně bez nutnosti měnit všechny vzorce.

#16 Re: Calc » Jak upravit soubor xlsx vytvořený MS Office » 10. 1. 2024 14:38:07

"Stahovací seznam" v LO najdete v záložce Data pod odrážkou Platnost. Postavte tedy kurzor na stahovací buňku, klikněte na Data -> Platnost a otevře se dialog, kde byste snad mohl vyčíst odkud se tahají argumenty výběru.

#17 Re: Calc » Jak upravit soubor xlsx vytvořený MS Office » 7. 1. 2024 20:28:09

vorec vypadá v pořádku tak se podívejte zda na D6 je ta hodnota co hledáte a že je také obsažena v oblasti 'sl. tarify'.C4:C23. To bych udělal na začátek.

#18 Re: Calc » Načítání údajů z ARES-VYŘEŠENO » 6. 1. 2024 17:21:07

Díky - neutr - nějak jsem to zbastlil. Trochu je tam problém s tím že čárky mohou být i v argumentech, ale dalo se to překonat. Zároveň je riziko že hledané heslo bud součástí i jiných hesel (např. "dic"). Nakonec mám ale pocit že to rozdělování na řádky ani není nutné. Jaké to má výhody? Existuje i jakási novější funkce v novějším LO: =PARSEJSON(JSON,Pattern). Bohužel musím mít z různých důvodů starší office. Tož můj makro bastl:

dIco = list.getCellByPosition(sloupec, radek).value
		
	xmlHtp = CreateObject("MSXML2.XMLHTTP")
	oleService = createUnoService("com.sun.star.bridge.OleObjectFactory") 
	XMLDOC = oleService.createInstance("Msxml.DOMDocument")

	if dIco <> 0 Then
	
		ico = Format(dIco,"00000000")

		sURL = "[url]https://ares.gov.cz/ekonomicke-subjekty-v-be/rest/ekonomicke-subjekty/[/url]" & ico
		'http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_bas.cgi?ico= ' STARÉ XML

		xmlHtp.Open "GET", sURL, False  
		xmlHtp.Send
		XMLDOC.loadXML xmlHtp.responseText
		strResponse = xmlHtp.responseText
		
		strResponse = Replace(strResponse, CHR(34), "") 'Odstranit veškeré uvozovky
		
		Dim Pattern(6) as string
		Pattern = Array("obchodniJmeno","nazevUlice","cisloDomovni","cisloOrientacni","psc","nazevObce","dic") 'hledaná hesla
				
		strResponse = Replace(strResponse, ", ", "+ZZZ+") 'nahradím čárku s mezerou nějakým jedinečným znakem
		
		For i = 0 to 6
				
			izacatek = InStr(1, strResponse, Pattern(i)) + LEN(Pattern(i)) + 1
			ikonec =  InStr(izacatek, strResponse,",")
			Hodnota(i) = MID(strResponse, izacatek, ikonec - izacatek)
			Hodnota(i) = Replace(Hodnota(i), "+ZZZ+", ", ")  'nahradím jedinečný znak za čárku s mezerou
		
			print Hodnota(i)
		
		Next i
		
	else
		msgbox ("Je zapotřebí nechat kurzor na ič",0,"Repete")

	end if

#19 Re: Calc » Načítání údajů z ARES-VYŘEŠENO » 5. 1. 2024 21:38:48

Já ten JSON jakoby načtu a vidím ho, ale načítám to opravdu jako čistý text a nevím jak se dostat k tomu konkrétnímu údaji. Neexistuje v BASICu nějaká struktura, která by takový to soubor dokázala rozklíčovat? V tom textu vidim třeba ,"dic":"01234567", (i s těmi čárkami okolo). Asi bych si s tím nakonec nějak poradil prostě hledání hesla ,"dic": a pak nějaký rozklíčování délky textu mezi dvojtečkou a čárkou a vytažení toho čísla, ale je to takové fušérké, se mi zdá. Jestli není nějaké již systémovější řešení. Nedalo by se to třeba převést na normálně řádkované CSV? Jo zapomněl jsem podotknout že je to celé v jednom řádku.(Já to totiž stále načítám přes ty původní XML nástroje ...)

#20 Calc » Načítání údajů z ARES-VYŘEŠENO » 5. 1. 2024 13:08:53

ludviktrnka
Odpovědí: 4

Ahoj, netahali jste někdo údaje ze starého ARESU do LibreOffice? Jak jste se vypořádali se změnou na nový systém rejstříku? Přestali vracet XML a vrací asi jen JSON. Nějaké zkušenosti s touto problematikou? (Bohužel JSON je pro mne španělská vesnice)

#21 Re: Calc » STYLE v CONCATENATE - VYŘEŠENO » 2. 11. 2023 14:00:28

ahoj, nejsem si jist tím vlastním stylem, ale pokud jej lze definovat "normálně" pak bude fungovat klasické TEXT např.: =CONCATENATE("Text ";TEXT(SUM(A2:A5);"0 000"))


EDIT: osobně používám jednodušší ="Cokoli "&TEXT(FUNKCE();"formát")

#22 Re: Calc » souhrn záporných položek- vyřešeno » 24. 10. 2023 09:04:26

Pokud budou data uspořádány naopak - tzn. ne v řádcích ale ve sloupcích pak lze použít kontingenční tabulku s filtrem nebo rozšířený filtr (zadání je rozdíl <0).
Pokud by bylo nutné použít vzorce pak je možné ve stávajícím uspořádání přidat nahoru řádek se vzorcem: IF(B4<0;MAX($A$1:A1)+1;0) (v buňce B1 a roztáhnout do řádku) tím se označí všechny záporné položky na vzestupné řadě.
Potom se výsledná tabulka vytvoří pomocí vyhledávání položek v prvním řádku tabulky pomocí vzorce: =HLOOKUP(1;$B$1:$H$4;2;0) přičemž na dalším řádku bude vyhledávaná hodnota 2 atd. a ve sloupcích se zase mění index na 3 a 4. No snad je to pochopitelné.


Edit: Pro snadnější rozšíření vzorce lze vyhledávanou hodnotu nahradit číslem řádku ROW($A1); =HLOOKUP(ROW($A1);$B$1:$H$4;2;0)

#23 Re: Calc » Načtení dat z google disku » 26. 7. 2023 11:39:06

Přímé řešení by mě docela zajímalo, ale taky se obávám že to nejde. Office asi nedisponuje prostředky pro překonání přístupového systému do google účtu - ale nevím jen hádám. Jinak tedy obejít to jde tak, že se v Googlesheetu naprogramuje export dat do CSV (případně jsou i nějaké doplňky tohoto druhu, ale ty jsou obecné povahy, takže záleží na konkrétním případu zda je to využitelné) a na straně Office zase import CSV do tabulky. Takto to lze.

#24 Re: Calc » Posun na poslední vyplněnou buǩu ve sloupci A (Vyřešeno) » 9. 6. 2023 14:04:59

Taky přispěju se svou troškou do mlejna :-)

Sub skoc_na_konec
  Dim oSh As Object
  Dim oSloupec as Object
  Dim oOblasti as Object
  Dim oBunka as Object
	
  oSh = ThisComponent.Sheets.GetByName("vstup_z_banky")
  oSloupec = oSh.GetCellRangeByName("G2:G10000")
  oOblasti = oSloupec.queryContentCells(1+2+4+16).RangeAddresses

  If Ubound(oOblasti) < 0 Then   ' Nenalezeno, vybereme začátek
     radek = 2
  Else   
    radek = oOblasti(Ubound(oOblasti)).EndRow + 2
  End If 
  presun ( "G" & radek )
End Sub


sub presun (pozice as string) 'metoda pro ulození poslední hodnoty
	dim dokument   as object
	dim dispatcher as object
	dokument   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "ToPoint"
	args1(0).Value = pozice
	dispatcher.executeDispatch(dokument, ".uno:GoToCell", "", 0, args1())
end sub

#25 Re: Calc » CALC Přestane přepočítávat některé vzorce » 1. 3. 2023 20:14:24

Naprosto nepochopitelně se mi přestal přepočítávat naprosto jednoduchý vzorec =A1 (prostě jsem chtěl mít ten sloupec na dvou místech, obešel bych se bez toho, ale je to přehlednější). Nahradil jsem to za =1*A1 a zatím to funguje. Jindy se mi nepřepočítávaly vzorce se SUMPRODUCT, to už je horší, ale to se mi v poslední době neděje, tak snad dobrý.

Zápatí

Používáme FluxBB