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

#26 Re: Co se jinam nehodí... » Prodej hotového dokumetnu - licence » 16. 10. 2011 21:04:41

ano, první odstavec vystihuje mou situaci.

ty další odstavce nejsou pro mně úplně průhledné(např. nevím jestli tím softwarem myslí celý program OO nebo jestli tím může být myšleno i ten muj soubor.ods)...každopádně v žádné z těch vět nečtu nějakou represi nebo omezení...takže to je dobře smile

#27 Re: Co se jinam nehodí... » Prodej hotového dokumetnu - licence » 16. 10. 2011 12:18:55

jé to slyším rád. Nejjednoduší způsob prodeje bych si představoval tak, že bych tomu kupujícímu vypálil CD(nebo poslal na mail link) s OO zdarma + soubor.ods který jsem vytvořil, za který bych chtěl ty peníze.
Aby nevznikla nějaká pochybnost o tom, že neprodávám OO:
Pokud by se našel člověk, který by chtěl dělat problémy, mohl by např. říct, že  chci peníze za soubor.ods ve kterém jsou mé makra atd., ale i kódy OO, které jsem já nevymyslel a za tyto OO kody bych asi peníze neměl chtít...myslíte si někdo, že by toto mohlo nastat, nebo je má představa, že prodám soubor.ods v pořádku?
diky

#28 Co se jinam nehodí... » Prodej hotového dokumetnu - licence » 10. 10. 2011 16:27:21

dech
Odpovědí: 10

ahojte, chci se zeptat - pokud něco vytvořím v OO - "program" - spousty maker atd. - mohu to prodat?
Tedy bych nechtěl přeprodávat OO samotné , ale ten nápad, který jsem do nich dal.
diky

_____________________________________________________

Oddělil jsem dotaz od starého vlákna. ;o)

#29 Calc » crash Calc LibreOffice 3.4. s Pivot Table » 7. 6. 2011 07:10:46

dech
Odpovědí: 0

Ahojte,
zkuste si vytvořit primitivní kontingenční tabulku v LibreOffice 3.4. která bude mít víc jak jeden sloupec.
A ted chytněte hlavičku jednoho ze sloupců KT a dejte ho mimo KT - az se ukáže kurzor s křížkem-jako že chceme tento sloupec dát pryč z KT. Pustím tlačítko myši a ejhle LO havaroval....dělá vám to taky?
zkoušel jsem to ve virtuálních (VMWare) Win XP

#30 Re: Calc » více příkazů v makru po THEN ("funkce" IF) » 17. 1. 2011 16:14:57

bravo! ...tak jednoduché....diky pánové...příručku stahuju....

#31 Calc » více příkazů v makru po THEN ("funkce" IF) » 17. 1. 2011 09:21:02

dech
Odpovědí: 4

Ahojte, nevím jak provést více úkonů v rámci "funkce" IF po slově THEN v jednom makru...příklad:

sub makro
list = ThisComponent.getSheets().getByName("list1")
bunka = list.getCellrangeByname("a1").string

if bunka = "auto" then list.getCellrangeByname("a2").setstring("modré") and
list.getCellrangeByname("a3").setstring("rychlé")

end sub

chci aby, když bude v A1 slovo "auto" aby se v A2 a A3 taky objevilo nějaké slovo. Funguje to jen s jedním úkonem, ale pokud dám úkonů víc tak stane se to že to napíše chybu: neočekávaný symbol and. Je jasné že to mám nějak blbě napsané(to s tím "and").  Vím že bych mohl udělat druhé makro a v něm napsat těchto více úkonů....ale kdybych to chtěl tak jak to mám v tom příkladu výše(=více úkonů za slovem THEN)....šlo by to nějak?
diky

#33 Re: Calc » Výsledek makra pro jiné makro » 2. 1. 2011 20:12:53

wow,funguje to,ted to zkusim pouzit v tech slozitejsich pripadech...diky!

#34 Calc » Výsledek makra pro jiné makro » 2. 1. 2011 12:45:01

dech
Odpovědí: 2

Ahojte,
potřeboval bych se naučit jak použít výsledek makra v jiném makru,napr(tento vzorovy priklad by jiste sel vyresit v ramci jednoho makra,ale jak rikam-je to vzorove pro tento ucel):

sub makro
list = ThisComponent.getSheets().getByName("List1")

A = 2
B = 5
vzorec = A+B

end sub


sub makro2
list = ThisComponent.getSheets().getByName("List1")

list.getcellrangebyname("A5").setvalue(makro)
end sub

Když spustím makro2 tak se objeví chyba: "Nepřípustná hodnota či datový typ. Datové typy nesouhlasí"
Když místo  ...setvalue(makro) bude ...setvalue(vzorec) tak to žádnou chybu nevyhodí,ale v bunce A5 se objeví 0 a ne 7.
Samozřejmě mohl bych prvni makro nechat ulozit vysledek do nejake bunky a z teto bunky bych mohl vysledek nechat nacist druhym makrem...ale to se mi zda takove tezkopadne reseni a chtel bych se to radsi naucit touto cestou jak je z příkladu výše zřejmé.
diky za rady

#35 Re: Calc » Jak změnit formát dat pomocí makra » 1. 12. 2010 00:09:57

wow...tak jsem to zkusil,ale nepochopitelně nešla najít ta apostrofa ' a proto taky nemohla být nahrazena a z textu se nemohlo stát číslo. Pak jsem tady na foru ale nasel podobny pripad, kdy ale z textu cislo udelali tak ze našli tečku "."  a nahradili tečkou "."  . Pro mě nepochopitelné, ale fungovalo to! Sice mám makro nahrané stále rekordérem, ale už tam nefiguruje vzorec VALUE a jeho kopírování zpět do zdrojového sloupce a místo toho je to omezeno na operaci nahrazení symbolů - pomocí makra. Takže s tímhle jsem spokojen. Díky za navedení na správnou kolej!

#36 Re: Calc » Jak převést textový datum na skutečný datum ? » 30. 11. 2010 23:39:20

nechápu jak,ale funguje to - to nahradit tečku tečkou,ale nechápu to, vždyt tam je apostrofa která to datum mrší na text a ne tečky...

#37 Calc » Jak změnit formát dat pomocí makra » 30. 11. 2010 15:16:56

dech
Odpovědí: 2

Ahojte, mám sloupec dat - datumů, které jsou bohužel v textovém formátu: '30.12.2010
Proto abych je převedl na datumy (jde s nima počítat a měnit jim formát dat třeba na "DD/MM") musím normálně použít fci.: =VAULE(A1)  a ta mi to opravdu převede na to správné netextové datum.
Jde nějak to převedení z textového formátu na číselný vnést do makra aniž bych musel kolem zdrojových dat mít jiné vzorečky(VALUE..)?

mám na mysli něco takového,ale nefunguje to-z pochopitelných důvodů jak níže uvidíte v kódu, ale když se na to někdo kouknete tak možná budete vědět co na tom zpravit-o co to doplnit:

Sub Makro
list = ThisComponent.getSheets().getByName("list1")
zdroj = list.getCellRangeByName("A1:A1000").value  'bohuzel nezíská žádné
hodnoty protože je v bunkách text
list.getCellRangeByName("A1:A1000").setvalue(zdroj)
end sub

NEBO

Sub Makro2
list = ThisComponent.getSheets().getByName("list1")
zdroj = list.getCellRangeByName("A1:A1000").getRangeAddress()
cil = list.getCellRangeByName("A1:A1000").getRangeAddress()
list.copyRange(cil,zdroj)      'stale mi tu chybi zmena z textu
na cisla=datum
end sub

dobrý začátek by byl, kdybych zjistil jak úspěšně pomocí makra (ne pomocí vzorečku(VALUE) v listě) změnit bunku jako text na bunku jako cislo.
diky

#38 Re: Calc » proměnné v makru s IF » 30. 10. 2010 11:52:38

aha, takto mi to taky slo,ale snazil jsem se to zjednodusit tim jak to mam napsane v prvnim prispevku...no takze to tak nejak jednoduse jak jsem si to predstavoval nepujde a musim zustat u varianty kde bude aa bb definovane zvlast jako funkce/makro.
diky

#39 Calc » proměnné v makru s IF » 30. 10. 2010 09:52:56

dech
Odpovědí: 3

Ahojte, snažím se v makru použít proměnné,ale když to spustím tak se mi objeví chyba "vlastnost nebo metoda "aa" nenalezena". Účel této funkce: pokud bude v A1 č. 1 tak se objeví v A2 "aaaa".

Sub Main
list = ThisComponent.getSheets().getByName("List1")
bunka = list.getcellrangebyname("A1").value
aa = list.getcellrangebyname("A2").setstring("aaaa")
bb = list.getcellrangebyname("A2").setstring("bbbb")

if bunka = 1 then aa else bb
End Sub

když to zadám takto tak to funguje

Sub Main
list = ThisComponent.getSheets().getByName("List1")
bunka = list.getcellrangebyname("A1").value

if bunka = 1 then list.getcellrangebyname("A2").setstring("aaaa") else list.getcellrangebyname("A2").setstring("bbbb")
End Sub

ale chtěl bych vědět jestli to nějak funguje tak jak mám napsáno v prvním případě,když se udělá nějaká úprava aby to fungovalo. diky

#40 Re: Calc » V makru vzorec a výsledek do buňky » 24. 10. 2010 22:22:23

aha,tak to je ten problém, že Basic nepozná ty funkce (to je mi ale divné). Takže proštudýruju ten odkaz od lp. diky

#41 Re: Calc » V makru vzorec a výsledek do buňky » 24. 10. 2010 10:38:28

diky,ok, tak ted si myslim ze jsem naadresoval proměnné a snažím se použít funkci MAX v makru:

sub makro2
list = ThisComponent.getSheets().getByName("List1")

A1 = list.getcellrangebyname("A1").value
A2 = list.getcellrangebyname("A2").value
vzorec = MAX(A1;A2)    'v bunce A1 je č."5" a v A2 je č. "2"

list.getCellRangeByName("B1").setValue(vzorec) 'vysledek by měl být č. 5 v bunce B1

end sub

při provedení makra se objeví chyba: "...nesouhlasí uvozovky" a je označený řádek "vzorec = max..."
nebo

sub makro2
list = ThisComponent.getSheets().getByName("List1")
oblast = list.getcellrangebyname("A1:A3").getrangeaddress

vzorec=MAX(oblast)    'v bunce A1 je č."5" a v A2 je č. "2"

list.getCellRangeByName("B1").setValue(vzorec)

end sub

při provedení tohoto makra se objeví chyba: "podprocedura nebo funkční procedura není definována"
no nevím co už může být špatně

#42 Calc » V makru vzorec a výsledek do buňky » 23. 10. 2010 21:17:24

dech
Odpovědí: 6

Ahojte, trochu jsem se tady koukal, ale nenašel jsem:
Jak do makra napsat vzorec, který něco spočítá a výsledek se objeví v buňce?Vzorec nechci mít v bunce-jen v makru.
Mělo by to asi vypadat tak nějak:

sub makro
list = ThisComponent.getSheets().getByName("List1")

vzorec = A1+A2  'List1.A1=5  List1.A2=2

list.getCellRangeByName("B1").setValue(vzorec)

end sub

no a samozřejmě v B1 se mi objeví 0 - vzorec nefunguje. Takže jak ten "vzorec" má správně vypadat? díky!

#44 Re: Calc » Prosim, pomozte s Makrem/Funkci » 17. 10. 2010 23:48:08

tak jsem na to přišel(jak zjistit číslo posl. řádku:
I have found the way how to obtain number of last row filled by data:

Sub number_of_last_row_in_column_A

sheet = ThisComponent.getSheets().getByName("sheet1")
range = sheet.getCellRangeByPosition(0, 0, 0, 65535)
empties = range.queryEmptyCells
full = sheet.getCellRangeByPosition(0, 0, 0, empties.RangeAddresses(0).startRow + 1)
lastrow = full.RangeAddress.EndRow

sheet.getCellByPosition(1,0).setValue(lastrow)  'puts the result in B1 cell
End Sub

#45 Re: Calc » Prosim, pomozte s Makrem/Funkci » 11. 10. 2010 21:39:43

JO!
Našel jsem tohle makro, které pracuje ve skrytém listě a kopíruje oblast do daného cíle(žádné UNO)

sub main4
Dim Doc As Object
Dim Sheet As Object
Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress
Dim CellAddress As New com.sun.star.table.CellAddress

Doc = ThisComponent
Sheet = Doc.Sheets(0)

CellRangeAddress.Sheet = 0
CellRangeAddress.StartColumn = 0
CellRangeAddress.StartRow = 0
CellRangeAddress.EndColumn = 10
CellRangeAddress.EndRow = 0

CellAddress.Sheet = 0
CellAddress.Column = 0
CellAddress.Row = 25

Sheet.copyRange(CellAddress, CellRangeAddress)
end sub

JEDINOU věcí kerá mi zbývá dořešit je jak naučit makro najít konec dat(bez UNO)-abych tuto proměnlivou(:-D proměnnou samozřejmě) mohl nastavit do "CellAddress. ..."

#46 Re: Calc » Prosim, pomozte s Makrem/Funkci » 11. 10. 2010 20:38:38

právě-potřebuju aby se to makro provedlo ve skrytém listě(je to taková databázička) a když nechám provést toto makro ve skrytém listě tak kurzor na právě aktivním listě se tak trochu zblázní a "uteče" až na 65536. řádek.
takže buď zbývá vylepšit toto makro tak aby fungovalo jen v daném skrytém listě...

sub copy_A1_Z1_paste_end_of_data
dim document   as object : document   = ThisComponent.CurrentController.Frame
dim dispatcher as object : dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "sheet1.$A$1:$Z$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array()) 
dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoToStartOfRow", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
end sub

nebo to makro předtím,jak jsem vložil, tak to naučit najít konec dat(a popřípadě naučit jak vložit zkopírovaná data,ale to už není nezbytně nutné-znám způsob který je ale namáhavý-musí se udělat příkaz pro každou zopírovanou a vklaádano bunku)

tak kdyby někdo věděl pánové,tak diky!

#47 Re: Calc » Prosim, pomozte s Makrem/Funkci » 11. 10. 2010 07:09:11

eh,no,tak asi vím co mám špatně-buď jen to "setString" nebo celé to "getCellByPosition(0,9).setString(zdroj)" , ale jak to má být správně,nevím. Už jsem prozkoumal celý širý internet, ale většinou ty makra byly s "UNO" nebo nějaká šílenost.

#48 Re: Calc » Prosim, pomozte s Makrem/Funkci » 10. 10. 2010 14:11:18

Ahojte, mám zas problém :-((
Jednoduše potřebuju makrem zkopírovat A1:Z1 do A10:Z10  -všechna data(čísla,text,formáty,vzorce) - aby byl výsledek stejný jako když označím myší tento řádek(oblast) a vložím do 10. řádku
Kopírování vzorců aby bylo taky normální: jestliže bude v Z1 vzorec = A1+B1, tak aby v Z10 bylo A10+B10.
Ovšem, nelze k tomu použít to "UNO" rozhraní - jelikož tato operace probíhá ve skrytém listě a nahrát tuto operaci pouze rekordérem je kvůli tomuto destrukční.
Takže zkouším něco takového:

sub main
list = ThisComponent.getSheets().getByIndex(0)
zdroj = list.getCellRangeByName( "A1:Z1" )
list.getCellByPosition(0,9).setString(zdroj) 
end sub

no ale nefunguje to a hlasi to furt chyby,tak kdybyste někdo věděl...diky

#49 Re: Calc » Průvodce daty - kontingenční tabulky » 10. 10. 2010 10:26:16

no mám s KT další menší problém,který bych řekl půjde těžko vyřešit,ale tak musím to zkusit: Mám takovouhle malou vzorovou databázičku.
KT běžně "sdružují" stejné řádky do jednoho - prostě tímto způsobem:
kt1.png
namísto toho aby se slovo "pozemní" zobrazilo 6x tak se zobrazí 1x,"auto" namísto 3x jen 1x - To je OK.
Problém nastává v momentě, kdy se člověk podívá jen na KT bez znalosti zdrojových dat a mohl by si říct, že aut by mohlo být buď 2 bílé a 2 červené a 3 modré NEBO by si někdo mohl tuto tabulku vyložit i tak, že aut mohlo být 1x bílé,1x červené a 3x modré. To samé s vlakem. A proto bych potřeboval buď:
A)aby se v sloupci "počet" nesdružoval text -aby byl rozepsán na každém řádku - asi takto, s tím,že je třeba aby ten sloupec "počet" byl před sloupcem "barva":
kt2s.png

nebo B) aby se v tom sloupci "počet" ty čísla sčítaly.

Je mi jasné, že to není chyba KT, a že to vyplývá z logiky KT,ale kdyby někdo věděl jak to provést...diky.

#50 Re: Calc » kontingenčnú tabuľku spustiť automat. » 9. 10. 2010 18:18:06

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

Sub aktualizace_KT

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

end sub

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

Zápatí

Používáme FluxBB