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

#51 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 17. 4. 2022 09:06:30

To zní skvěle. Výsledek máte uložený?
Já se k tomu co jste upravoval v tom virtuálním stroji nedostanu jak jste ho stáhnul k sobě tak už je pouze na vašem Google drive.
A máte to uložený ve svém google drive pouze pokud jste v levo vedle spuštěného virtuálního stroje dal uložit.
Asi nejlépe výsledek samotnou tabulku s excelem si třeba přes firefox poslat z virtuálního stroje ven. Email, atd...
-
Jo to s očima znám, taky neustále zvětšuji font na mobilu i na počítači...

#52 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 16. 4. 2022 11:37:49

Narazil jsem na netu na virtualni online Ubuntu.
https://www.onworks.net/thirdparty/gdri … wnload.php
pokud máte Google Drive a zkopírujete do něj tento image
https://drive.google.com/file/d/1W11Gcp … sp=sharing
tak ho pomocí prvního odkazu můžete vybrat a spustit. Už jsem tam na plochu dal složku s poslední verzí XLSX a LO nastavil bezpečnost maker na minimum aby se to fungovalo. Ač je to starý LO tak i tak to hází stejnou chybu.
_
Pokud nechcete využívat ode mě přednastavený systém tak si můžete pustit svůj a nastavit si to sám, také nic složitého.
https://www.onworks.net/os-distribution … version-20

#53 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 16. 4. 2022 09:28:29

Hází to stále stejnou chybu obě makra. Ale na podruhé stisknutí to jde.
Je to furt rychlejší než pouštět makro ručně bez hlášky.
_
Také hezké svátky pokud to jde v této době vůbec popřát.

#54 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 15. 4. 2022 10:43:45

Děkuji čtvrtá verze je super, pamatuje i šířku sloupců. Sice stále vyhazuje chybu ale to se dá přežít.
_
Já jsem koukal a co se týká exportních tabulek tak nejširší mám 11 sloupců, ovšem většinou je to méně.
A na délku pokud by to bylo důležité se pohybuji max kolem 10tis řádků.
_
Také mě občas čílí že nemám nikde ve svém okolí Windows skoro 15 let, ale když je to nutné tak si stáhnu ze stránek MS zkušební verzi W10 a hodím jí do Virtuálboxu. Vlastně stejně by to šlo i u Ubuntu.
_
Samozřejmě mockrát děkuji, jste neuvěřitelně schopný a ochotný člověk.

#55 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 14. 4. 2022 12:18:06

Jinak jsem to teď testoval na největší tabulce co mám a ta úspora času je neuvěřitelná, doslova minuty VS vteřiny. Tohle řešení je blesk a odkliknout hlášku není až zas takový problém smile
_
Zeptám se, je možné aby se pamatovalo i šířku sloupců?

#56 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 14. 4. 2022 11:54:08

Zkusil jsem vše nastavit dle předlohy, vlastně jen tu poslední možnost jelikož ty předhozí jsem už měl odšrtnuté dávno.
Module1 a Module2 se chovají naprosto totožně. Ovšem bonus je v tom že zmizela jedna hláška takže o klik méně smile
_
Třetí modul končí stejnou chybou jako v minulosti, a nic se neuloží.
2022-04-12_11-00.png
_
Tak teď při psaní jsem znova ještě testoval první Modul a přišel jsem na to že...
Otevřu hlavní tabulku > Spustím Makro Module1 > Otevře se nový sešit s tlačítkem "Uložit a zavři" ovšem já na něj NEKLIKNU a spustím makro ručně "uložXLSX" a žádná hláška a XLSX se uloží a sešit zavře. smile
_
Jinak klidně můžeme přeskočit kdy se "vizuálně" otevře nový sešit a v něm klikám nebo pouštím další makro na uložení a zavření. Prostě by se mohlo prvním makrem bez následné vizuální kontroly ihned aktivní list uložit do XLSX (jen nápad)
_
Zkusil jsem ještě jeden pokus, a to že znova namapuji ono žluté tlačítko "Uložit a zavřít"
2022-04-14_12-48.png
Vím že to vypadá že žádná změna neproběhla ale poté kliknu na žluté tlačítko "Uložit a zavřít" a bez hlášky se uloží a zavře.

#57 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 13. 4. 2022 12:21:38

No sice úvaha je správná ovšem pokud půjde o mazání ostatních listů tak se trochu bojím o rychlost. Ostatní lity totiž mají i přes 10MB jelikož obsahují i tisíce malých fotek. Ovšem u současných pokusů oceňuji kopírování do nového sešitu což je bleskové :-)
_
Ovšem je to o testování, zatím to co jste už udělal konkrétně první verze je krom nutnosti odklepnutí dvou chybových hlášek nejednodušší a plní co má na 100%.

#58 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 13. 4. 2022 09:02:09

Tak první makro otevře nový sešit s chybou, ani po zavření chyby ani při pokusu spustit makro ručně opakovaně XLSX neuloží.
2022-04-13_09-51.png
_
Druhé makro funguje prakticky stejně jako to z Verze 1 a 2, jen je tlačítko link které spustím Ctrl+klik > poté vyskočí chyba a XLSX neuloží
2022-04-13_09-56.png
Ovšem zavřu li hlášku "Budiž" a opětovně Ctrl+klik na "Uložit a zavřít" už XLSX uloží a okno správně zavře.
_
I kdyby se toto nepodařilo vyřešit tak je to výborný, akorát bych musel odklikávat hlášky.

#59 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 13. 4. 2022 07:44:43

Ano máte pravdu, měl jsem 7.3.1.3, aktualizoval jsem tedy na 7.3.2 a problém je stejný.
Zkusil jsem tedy nepoužít ono "žluté" tlačítko a pustit makro přímo a hláška se neobjevila a XLSX se uložil.

#60 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 12. 4. 2022 11:59:58

Udělal jsem tedy následující postup.
Otevřel jsem tabulku > spustil makro"UložitListDo_XLSX" > otevřel se nový sešit a věm spustil záznam makra > Uložit jako > musel jsem vybrat kam jelikož mi to nabízelo úplně jinou složku kde jsem pracoval naposled > a toto je výsledek.

sub Main
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 ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///home/rrr-hlavni/Ulo%C5%BEit%20jako%20XSLX_verze2.xlsx"
args1(1).Name = "FilterName"
args1(1).Value = "Calc MS Excel 2007 XML"

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())


end sub

Zkusil jsem i makro poté spustit a funguje.

#61 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 12. 4. 2022 10:04:43

Tak druhá verze je u XLSX naprosto stejná jako situace jako u první verze, zase ta hláška > dvakrát odkliknu "Budiž" a znova kliknu na žluté tlačítko "Ulož xlsx a zavři" a to už se provede, plus je tam to podtržítko navíc. Podtržítko mi nevadí, ovšem u mě je zdroj ODS naprosto vždy.
_
U XLS to skončí jinou chybou
2022-04-12_11-00.png
a nic se neuloží.
_
ps: XLSX má u mě jinak přednost, je spousta firem kde mají přímo od vedení zakázáno otevítar XLS a vyžadují striktně pouze XLSX.

#62 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 11. 4. 2022 09:47:18

To makro co jste psal nahoře sice otevře nový sešit správně ale neuloží.
_
To z Uložto je lepší. Spustím makro a otevře se nový sešit se správným názvem a data jsou na hodnotách smile
Vlevo nahoře se objeví tláčítko "Ulož xlsx a zavři" kliknu na něj a...
2022-04-11_10-36.png
nic se neuloží, a vyskočí ty dvě hlášky... Ovšem kliknu na "Budiž" a ještě spodní "Budiž", čímž hlášky zmizí a poté znova kliknu na tlačítko "Ulož xlsx a zavři" a hle uloží se XLSX a okno se zavře smile
Takže nebýt těch dvou hlášek které musím odkliknout a znova kliknout na "Ulož xlsx a zavři" tak to funguje jak má.

#63 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 10. 4. 2022 10:25:42

Nejsem teď u pc, hned jak budu vše otestuji.
Ano stačí i XLS.
Ano používám výhradně Linux.
Když jsem před tím testoval tak se soubor neuložil.
Jinak jste mistr, používám několik vašich Maker X krát denně.

#64 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 8. 4. 2022 07:41:50

Děkuji za odpověď.
Po spuštění se otevře nová tabulka "Bez názvu 1"
2022-04-08_08-22.png
Co vidím tak se nepřevedli buňky na hodnotu a ty jsou pak #N/A.
_
To že se buňky zmenší není zas tak veliký problém, to mohu obejít nastavením menšího fontu ve výchozí tabulce. Ovšem kdyby to šlo byl by to příjemný bonus, nebo nastavit všem sloupcům šířku 3,5cm :-)
_
Nicméně celé to skončí chybou
2022-04-08_08-17.png
_

#65 Re: Calc » Hledání a kopírování celého řádku » 6. 4. 2022 20:23:51

Stačilo by Makro co by smazalo všechny řádky co neobsahují to co hledáte?
Možná by to šlo i VLOOKUPEM, to by bylo jednodužší, zítra u počítače mohu napsat návod. Ale chtělo by to od vás část vzoru, o kolik sloupců jjde.

#66 Calc » Makro export listu do XLSX (VYŘEŠENO) » 6. 4. 2022 20:06:49

barevnej
Odpovědí: 35

Zdravím,

je možné pokud mám více listů vytvořit makro které by nejdříve všechny buňky v aktivním listě převedlo vše na hodnotu a následně uložilo pouze ten aktuální list do XLSX se jménem původního souboru vedle ODS.

Zatím to vždy dělám ručně, ale říkal jsem si že by to šlo zautomatizovat.

#67 Calc » Chyba v LO 7.2 Zmenšit podle velikosti buňky » 25. 9. 2021 16:16:32

barevnej
Odpovědí: 0

Vím že sem se chyby nehlásí ale třeba tu je někdo kdo ví co s tím.
Nefunguje od verze 7.2 Formát buněk > Zarovnání > Zmenšit podle velikosti buňky
Zaškrtnout sice můžete ale nic to nedělá. Je to škoda, pokud teď něco přesáhne velikost třeba výsledek na místo toho vidím a tisknu ###, dříve se font sám zmenšil aby se to vešlo.

#68 Re: Co se jinam nehodí... » Motiv pro Libreoffice? » 17. 9. 2021 15:14:05

No teda že by to bylo zrovna user friendly. Tak alespoň vím že nejsem blbej a fakt to tam není u všech.

#69 Co se jinam nehodí... » Motiv pro Libreoffice? » 17. 9. 2021 14:19:32

barevnej
Odpovědí: 2

Z dávných dob si pamatuji že existovala možnost nastavit si motiv z Firefoxu.
_
7e632c96290dcdef4f8ae6dbeaf26fcd54a2cea2.png
_
Zdá se mi to nebo už tato možnost neexistuje. Ne že by to bylo životně důležité, jen pro zajímavost tongue

#70 Re: Calc » Převod čísla na text "VYŘEŠENÝ" » 11. 8. 2021 08:09:12

Výborně, funguje to smile Moc děkuji.
_
text2.png
_
Dokonce ani nemusím používat ve sloupci "B" ROUND wink

#71 Re: Calc » Převod čísla na text "VYŘEŠENÝ" » 10. 8. 2021 17:53:18

To vypadá že to bude ono, ráno hned vše otestuji. Zatím jsem to musel řešit krkolomě že jsem zkopíroval výsledný sloupec s cenami do textového souboru a pak jsem znova kopíroval z textového editoru zpět do tabulky ale už ne jako číslo ale jako @ text. Byla to sice minutka ale jen tak mě napadlo že by to mohlo jít i jinak.

#72 Calc » Převod čísla na text "VYŘEŠENÝ" » 10. 8. 2021 14:19:36

barevnej
Odpovědí: 4

Mám takový zajímavý problém. Mám výpočet který si zaokrouhlím =ROUND(A2*1,21;2) aby číslo bylo celé na dvě desetiny. Poté chci převézt výsledek do textu což už je problém jelikož odstraní na konci automaticky nuly.
_
text.png
_
Neberte příklad doslova, někdy mám dlouhé texty kde dosazazuji automaticky uprostřed ceny.

#73 Re: Calc » Tipy na zrychlení makro výpočtů » 4. 8. 2021 13:31:50

Fakt luxusní, mockrát děkuji za úpravu makra na míru, zdá se že to funguje bez chyb. Snad to tu také pomůže někomu jinému.

#74 Re: Calc » Tipy na zrychlení makro výpočtů » 4. 8. 2021 08:59:19

Mockrát děkuji, vše postupně testuji. To zobrazování řádků je bleskové SUPER smile
Teď jsem se zasekl na mazání. Předem nevím kde danná karta bude a tak jsem si řekl že dám na tvrdo jméno té karty ale to nějak nejde.

iSheet=Sheets.getByName("FAKTURA") 'číslo listu ve kterém skrývám

Říkám si zda by bylo možné toto: Smazat řádky bez ohledu na to kde daná karta je (buď podle jména nebo aktivní list) a jako bonus by bylo pokud by se před nebo po zpracování přesunula karta na pozici "0" prostě na začátek (je to z důvodu že to pak inportuje účetní program a ten umí číst z excelu pouze první list)
_

Sub NOVE_mazani 'pomocí com.sun.star.Sheet.SheetCellRanges + UNO pro skrýt označené řádky
	dim oDoc as object, oSheet as object, oRange as object, oRanges as object, oRangeAddress as new com.sun.star.table.CellRangeAddress, oEnum as object, o as object, data(), i&, iSloupec&, i1&, i2&, iSheet%, aSkryt as variant, oWindow as object
	dim oDlg as object, oPrubeh as object, oButton as object, iPrubeh&, bCancel as boolean 'pro ukazatel průběhu
	const iStep=30 : iPrubeh=0 'pro ukazatel průběhu
	
	oDoc=ThisComponent
	oWindow=oDoc.CurrentController.Frame.ComponentWindow
'	oWindow.Visible=false 'tohle kdyžtak skryje vnitřek okna Calcu
	
	iSheet=Sheets.getByName("FAKTURA") 'číslo listu ve kterém skrývám
	iSloupec=3 'sloupec dle kterého budu skrývat (A=0, B=1 atd.)
	i1=1 : i2=3100 'testované řádky (první řádek=0, druhý=1 atd.)
	aSkryt=0 'hodnota pro kterou skrývám řádek (v případě řetězců třeba "0")
	
	oSheet=oDoc.Sheets(iSheet)
	oRanges=oDoc.createInstance("com.sun.star.sheet.SheetCellRanges") 'rozsahy vybraných buněk
	with oRangeAddress 'sloupce přidávaného rozsahu
		.Sheet=iSheet
		.StartColumn=iSloupec
		.EndColumn=iSloupec
	end with
	
		rem ukazatel průběhu
		oDlg=progressBarInit(0, i2-i1, oDoc)
		oDlg.title="Mažu nulové :-)"
		oPrubeh=oDlg.getControl("Pprogress")
		oButton=oDlg.getControl("Pbutton")
	
	oRange=oSheet.getCellRangeByPosition(iSloupec, i1, iSloupec, i2) 'data ze sloupce dle kterého skrývám řádky
	data=oRange.getDataArray
	dim iZac&, iKon&, a as variant, b as boolean
	iZac=i1 : iKon=0 : b=false
	
	rem hlavní smyčka
	for i=lbound(data) to ubound(data)

			rem ukazatel průběhu
			iPrubeh=iPrubeh+1
			if iPrubeh=iStep then 'vykreslovat až po nějakém počtu kroků
				oPrubeh.value=i
				iPrubeh=0 'reset aktuálního počtu kroků
			end if
			if oButton.Model.state=1 then 'stisknuto Cancel v ukazateli průběhu
				bCancel=true
				exit for
			end if

		rem porovnávání hodnot a přidávání do oRanges
		a=data(i)(0) 'aktuální hodnota ze sloupce -- v ukázce jde o číslo; v případě řetězců třeba a=CStr(data(i)(0))
		if a=aSkryt then 'hodnota je skrývaná
			if iKon=0 then iZac=i+i1 'nemám žádný počet řádků tedy jde o první řádek rozsahu tak pamatuji číslo řádku
			iKon=iKon+1 'zvětšuji počet řádků které budu přidávat do rozsahu
			b=true 'až narazí na neskrývaný řádek tak přidá rozsah
		elseif b=true then 'řádek nemá hodnotu při které se skrývá
			with oRangeAddress 'řádky přidávaného rozsahu
				.StartRow=iZac
				.EndRow=iZac+iKon-1
			end with
			oRanges.AddRangeAddress(oRangeAddress,true) 'přidat rozsah
			iKon=0
			b=false
		else 'šlo o neskrývaný řádek takže začátek přidávaného rozsahu bude minimálně na dalším řádku
			iZac=iZac+1
		end if
	next i
	
		rem pro ukazatel průběhu
		if bCancel=true then 'stisknuto Cancel v ukazateli průběhu
			msgbox("Přerušeno")
			goto konec
		end if
	
	if iKon>0 then 'poslední řádky ještě mají být skryty
		with oRangeAddress 'řádky přidávaného rozsahu
			.StartRow=iZac
			.EndRow=iZac+iKon-1
		end with
		oRanges.AddRangeAddress(oRangeAddress,true) 'přidat rozsah		
	end if

	rem skrýt rozsahy přes UNO - rychlé
	oDoc.CurrentController.Select(oRanges) 'označit rozsahy
	dim document as object, dispatcher as object
	document=oDoc.CurrentController.Frame
	dispatcher=createUnoService("com.sun.star.frame.DispatchHelper")
	dispatcher.executeDispatch(document, ".uno:DeleteRows", "", 0, array()) 'UNO pro skrytí označených řádků
konec:
'	oWindow.Visible=true 'zobrazit skrytý vnitřek okna Calcu
	oDlg.dispose() 'deaktivovat ukazatel průběhu
End Sub








rem UKAZATEL PRŮBĚHU - zobrazuje se ve středu okna Libre
Function progressBarInit(min&, max&, optional oDoc as object) as object 'vrátí objekt dialogového okna; při chybějícím oDoc ho přichytí k Desktopu
	on local error goto chyba
	dim oDlg as object, oDlgModel as object, oButtonModel as object, oProgress as object, oWindow as Object
	dim oSize as object, oSiz as new com.sun.star.awt.Size, koef as double
	const iDlgWidth=140, iDlgHeight=45 'bacha, nejde o pixely jako kdyby se vytvářelo dialogové okno v Basic editoru a pak volalo; dále je pro vystředění okna použita metoda convertSizeToPixel a nastavena proměnná koef

	rem model dialogového okna
	oDlgModel=CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
	with oDlgModel
		.Width=iDlgWidth
		.Height=iDlgHeight
	end with

	rem ukazatel průběhu
	oProgress=oDlgModel.createInstance("com.sun.star.awt.UnoControlProgressBarModel") 'objekt ukazatele průběhu
	with oProgress
		.Name="Pprogress" 'jméno pro makro
		.ProgressValueMin=min 'minimum
		.ProgressValueMax=max 'maximum
		.ProgressValue=0 'aktuální hodnota
		.Width=120
		.Height=15
		.positionX=10
		.positionY=5
		.Border=3 'rámeček
	end with
	oDlgModel.insertByName("Pprogress", oProgress) 'přidat do modelu
	
	rem tlačítko Zrušit
	oButtonModel=oDlgModel.createInstance("com.sun.star.awt.UnoControlButtonModel")
	with oButtonModel
		.Name="Pbutton"
		.Width=40
		.Height=15
		.PositionX=50
		.PositionY=25
		.Label="Zrušit"
		.PushButtonType=com.sun.star.awt.PushButtonType.STANDARD
		.TabIndex=0
		.Toggle=true 'aktivace detekce vlastnosti State tlačítka
	end with
	oDlgModel.insertByName("Pbutton", oButtonModel)

	rem vykreslení dialogového okna
	oDlg=CreateUnoService("com.sun.star.awt.UnoControlDialog") 'dialog
	oDlg.visible=false 'skrýt dialog ať neproblikává
	oDlg.setModel(oDlgModel) 'nastavit model dialogovému oknu

	rem přidat dialogové okno k oknu dokumentu nebo Desktopu
	oWindow=CreateUnoService("com.sun.star.awt.Toolkit") 'dialogové okno
	if isMissing(oDoc) then 'přidat k Desktopu - pozor, systém může po chvíli vypsat že program neodpovídá
		oDlg.createPeer(oWindow,null)
	else 'přidat okno k oDoc
		dim oToolkit as object
		oToolkit=oDoc.currentController.frame.containerWindow
		oDlg.createPeer(oWindow,oToolkit) 'spojení
	end if

	rem propočty na vystředění dialogového okna
	with oSiz 'rozměr z kterého budu přepočítávat koeficient pro usazení dialogového okna průběhu doprostřed
		.Width=iDlgWidth
		.Height=iDlgHeight
	end with
	koef=iDlgWidth / oDlg.convertSizeToPixel(oSiz, com.sun.star.util.MeasureUnit.APPFONT).Width 'koeficient pro korekci dialogového okna

	oSize=oDoc.CurrentController.Frame.ContainerWindow.GetPosSize 'rozměry okna Calcu
	with oDlgModel
		.positionX=fix(koef*(oSize.Width-iDlgWidth/koef)/2) 'pozice X od levého horního rohu okna; šířku dialogu je třeba brát zvětšenou koef, pozici X pak zmenšenou koef
		.positionY=fix(koef*(oSize.Height-iDlgHeight/koef)/2) 'pozice Y od levého horního rohu okna
	end with
	oDlg.visible=true 'zobrazit dialog
	progressBarInit=oDlg
	exit function
chyba:
	msgbox("Error " & Err & ": " & Error$ + chr(13) + "Line: " + Erl , 16 ,"progressBarInit")
End Function

#75 Re: Calc » Tipy na zrychlení makro výpočtů » 3. 8. 2021 17:06:52

Poslední přání, potřebuji opak prvního makra, tj že potřebuje zase zobrazit skryté řádky které obsahovaly nuly. Vím že to jde označit řádky a pak dát zobrazit ale je to přeci jen pohodlnější přes tlačítko.

Zápatí

Používáme FluxBB