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

#1 28. 10. 2015 19:55:33

jandap
Člen
Registrace: 26. 10. 2015
Příspěvků: 3

Calc - Makra

Makra - nefunkčnost jednoduchých maker (formátování)


Řadu let aktivně využívám Excel - převážně pro práci s daty (exporty/importy z ekon.databází, úpravy dat, přehledy). Taktéž řadu let fandím open alternativě (open office, libre office) a nesmírně bych si přál aby mohla být dobře použitelnou alternativou, neboť kanzelářské MS produkty již dávno cílí především na peněženky, aniž by reálně nabízely něco více než produkty z konce 90tých let (pokud jde o Excel, považuji za jedinou  přidaná hodnotu možnost více bnež 65tis řádků, to je vše)

Při práci často používám pár svých maker VBA, během let jsem ve VAB nich "programoval" i pár aplikací (rozhodně bych se jimi nechlubil, leč fungují). Samozřejmě při zkoušení Open Office/Libre office (dále LO/OO) mne zajímalo jak je tomu s makry v Calcu a musím říci, že pocit je rozporuplný.

1. Nenašel jsem nějaký komplexnější materiál o makrech v LibreOffice, na základě něhož by pouhý pokročilejší uživatel (za programátora se nepovažuji) s nimi mohl skutečně začít pracovat.
2. To, co jsem našel (a nějaké příklady které jsem si zkoušel) mne dovedlo k poznáníá, že na co stačí ve VBA pár řádků kódu (velmi srozumitelného), je v OO/LO třeba někdy až vícenásobně delšího kódu, jehož srozumitelnost je poněkud sporná.
3. Makra z VBA (ani velmi jednoduchá) v OO/LO nefungují korektně (Samozřejmě předpokládám jejich spuštění při řádném nastavení - tj. podpora maker VBA, nastav. Option VBASupport 1 ...)
4. Bohužel správně nefungují ani nativní primitivní makra přímo nahraná v OO/LO

Pro ilustraci uvádím příklad - Makro které používám již řadu let pro připravu mé-standartní podoby sešitu.
Funkce:
- vybere všechny buňky, nastaví písmo arial, velikost 8 s normální pozicí bez efektů,
- zarovná sloupce
- nastaví barvu pozadí na transparentní
- 1.řádek zabarví (používám pro nadpisy, tj.jeho zvýraznění)
- Nastaví horizontální příčku na 1.řádek (tj. aby nadpisy byly stále vidět)

Makro viz dole v tomto příspěvku.

Pokud sešit otevřu  v LO s nastavením na podporu VBA a uložím opět jako Excel.formát, makro se mi zachová s tím že se na začátek doplní "Option VBASupport 1". Proč ne. Po spuštění se místo nastavení horiz.příčky za 1.řádek nastaví příčka vertikální a to pár sloupců vpravo...

Pokud si obdobné makro zkusím vytvořit přímo v LO/OO nahráním, pak po spuštění se horizontáolní příčka nastaví pod 2l.řádek místo pod 1. a opět se nastaví pár sloupců vpravo příčka vertikální (o níž v makru nebyla řeč)


Je to jen takový hloupý příklad, leč demonstrující jasně, že bohužel v OO/LO dobře nefungují clelkem jednoduché věci. Ač nejsem přítelem MS, musím říci že podobné problémy jsem ve VBA zaznamenal jen zcela výjmečně, ve složitých případech)

Rád bych věděl zda existuje jednak nějaká rozumná cesta jak se do maker OO/LO ponořit, bez nutnosti vystudovat Matfyz či FEL, jednal šance, že budou makra v OO/LO skutečně na základní operace fungovat dobře. Formátování sešitu mezi ně rozhodně počítám !
Bohužel nějakou komplexnější konferenci na toto téma jsem nezahlédl, jinak bych jistě sám rád přispěl, či se alespoň poučil.

P.Janda


Makro VBA:
Sub FormatSesit()
    Cells.Select
    With Selection.Font
        .Name = "Arial"
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With

Offline

#2 29. 10. 2015 09:56:32

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

Re: Calc - Makra

Existují takové zdroje. Česky zatím jen "Malá makra" od Daniela Sedláčka. Ta můžete najít spolu s dalším podobným materiálem ve vyhledávání na stránce "články" - modrý pruh s vyhledávacím okénkem.
     Takže zde klikněte na nabídku "články" a pak v pravé straně modrého pruhu je vyhledávání, kde zadáte "MALÁ MAKRA". Jsou to asi 2 stránky odkazů a nejen na seriál Dana Sedláčka.
     V současné době je nastartován seriál o programování v Basicu, ale zatím je to jen první - úvodní díl od Eduarda Boldižára. (Články - v současné době viditelný druhý článek od vrchu.)



     Ostatní zdroje jsou v angličtině. Nejznámější autor je Andrew Pythoniak, nebo B. Marceli. Dají se vygooglit různé verze a většinou fungují i ty starší. Doporučuji do vyhledavače zadávat "OpenOffice macros + termín v angličtině", respektive vyhledávání na fórech OpenOffice a LibreOffice. Při tom LibreOffice toho moc neobsahuje, ale můžete hledat v šablonách a rozšířeních. Tam bývá plno věcí již hotových. Také existuje stránka "Wiki" pro OpenOffice - a je to jakási paralela k návodům co a jak udělat. Bohu žel naše česká Wiki umřela na Ottúv zásah z hůry, takže existuje jen anglická verze.


     Vámi uváděný kód VBA potřebujete předělat pro LO, AOO? - Není problém. Pokud máte víc takových maličkostí postněte je sem. Princip je v tom, že Musí být uzavřeno
Sub Nazev
..
..
End Sub

     Buňka nebo úsek buněk potřebuje nezkrácenou deklaraci a existují 2 druhy. Parametry mezi With..End With se zapisují stejně, ale mají jiné názvy (většinou). Zapisují se jen ty měněné.


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

Offline

#3 30. 10. 2015 07:15:45

jandap
Člen
Registrace: 26. 10. 2015
Příspěvků: 3

Re: Calc - Makra

Díky za reakci (odkazy na zdroje k makrům)
Dodávám, že u mého makra je samozřejmě i "end sub", pouze při kopírování do schránky mi vypadlo :-)
Podstata mého příspěvku ale byla ve dvou věcech:
1) Špatná funkčnost i jednoduchých maker ve z VBA v LO/OO (škoda)
2) "Ukecanost" a složitost makrojazyka LO/OO proti VBA (pro neprogramátora fatální, pro mírně poučeného otravné)
3) Mizerná funkčnost vlastního nahrávače maker v LO/OO - to je z mého pohledu nejhorší. Při absenci dobrých komplexních  výukových materiálů (a ty nezlobte se opravdu k makrojazyku LO/OO nejsou) bývá studium nahraných maker důležitým zdrojem inspirace. Zde je to jen k vzteku...
PJ

Offline

#4 30. 10. 2015 08:12:54

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

Re: Calc - Makra

Já jsem celkem zvyklý na různé složitosti a někdy i záludnosti jazyka StarBasic, ale jako nevýhodu bych jednosznačně neidentifikoval. Faktem je, že potom člověk nespoléhá na svou paměť a kopíruji ověřené kusy kódu i když tak 90% běžných věcí bych z paměti asi dal.
     To co nemá nikde návod je nahrávání maker. Kdysi jsem to chtěl udělat ale mám toho hodně a tak jsem se k tomu nedostal. Například nahrát vzorce, nebo skoky napříč listy a mezi listy je žůžo. Ale dá se to udělat. Při tom právě tahle funkčnost by uživatelům asi pomohola k automatizaci nejvíce.


     Musím ale konstatovat, že dotazů na nahrávaná makra je minimum. Ani si neumím nějaký dotaz vybavit. Musím ale podotknout, že nahrávaná makra by vyžadovala spíš videonávody ve formě filmů, nebo prezentací. No snad se k tomu někdy dokopu já nebo někdo jiný.


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

Offline

#5 30. 10. 2015 12:14:06

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 844

Re: Calc - Makra

K tomu co napsal jandap.

Naprosto souhlasím se všemy body.

(Ne)přenositelnost maker VBA <-> LO/OO mi tolik nevadí. Obojí je navázáno na objektový model, proto zajištění přenositelnosti je poměrně složité a s výjimkou velmi jednoduchých operací pravděpodobně nerealizovatelné. Při psaní mne napadlo vyzkoušet makro pro excel vedle makra pro calc v jednom sešitu nebo zkusit makra v pomocných (nepřenášených) sešitech. Snad k tomu najdu čas.

Ostatní body. I když snad programovat umím, ukecanost jazyka=pro získání elementárních objektů se musí napsat dost kódu, i mizerná funkčnost záznamníku maker mi vadí také. Tolik, že v OO programuji makra minimálně.

Doplnil bych ještě další problémy:

4) Zhoršuje se přenositelnost maker mezi LO a AOO
5) Dokumentace k programovacím jazykům je hodně mizerná (Nechci psát "neexistující", ale nenašel jsem ji. K nalezení je dokumentace pro programátory kódu. Pomůže, ale ne vždy.).
6) Kromě Basicu jsou zde ještě další možnosti (dokumentované ještě hůře než Basic.) Aby to bylo zajímavější, jednotlivé jazyky umí různé věci.

Mimo téma. Pokud používáte makro k nastavení "standardního" vzhledu sešitu, podívejte se na možnosti šablon. Ty jsou k tomuto účelu navrženy.

Offline

#6 3. 11. 2015 17:25:49

jandap
Člen
Registrace: 26. 10. 2015
Příspěvků: 3

Re: Calc - Makra

Díky za příspěvky, nepotěšily ale povzbudily že v tom nejsem sám... :-)
ad Neutr: mohl bych poprosit o příklad fungujícího kódu právě k uvedenému makru na úpravu úvodního vzhledu ? (abych zkusil nějak začít)   
ad lp: Šablony jsou zde zcela mimo. Jde o to, abych si na vzhled na nějž jsem zvyklý upravil právě otevřený sešit, tj. nikoliv jen nový ale především existující (např. výsledky různých více či méně podařených exportů z informačních systémů - což je má obvyklá zábava). Obdobně si řeším řadu věcí, např. generování sql skriptů z datových řádků v sešitu aj...  (to se samozřejmě již nahrávačem udělat nedá, to lze skutečně jen napsat).

PJ

Offline

#7 3. 11. 2015 18:52:17

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

Re: Calc - Makra

Tak pár maker aby bylo možné začít :

Sub Cell_Array_Border
   Dim BasicBorder as New com.sun.star.table.BorderLine
   Dim oBorder As Object
   oBorder = ThisComponent.Sheets.getByName( "List1" ).getCellRangeByPosition(1,1,2,2).TableBorder
   BasicBorder.Color = RGB(255, 0, 0)
   BasicBorder.InnerLineWidth = 0
   BasicBorder.OuterLineWidth = 2
   BasicBorder.LineDistance = 0
   oBorder.LeftLine = BasicBorder
   oBorder.TopLine = BasicBorder
   oBorder.RightLine = BasicBorder
   oBorder.BottomLine = BasicBorder
   ThisComponent.Sheets.getByName( "List1" ).getCellRangeByPosition(1,1,2,2).TableBorder = oBorder
End Sub


Sub Find_A_udela_BOLD
oCell = ThisComponent.getSheets().getByIndex(0).getCellRangeByName("A2")
ocellString = oCell.String
oTC = oCell.createTextCursor
oTC.gotoStart(false)
oString = InStr(1, oCellString, "A")
If oString > 0 then
r = oString - 1
oTC.goRight(r,false)
oTC.goRight(0,false)
oTC.goRight(1,true)
oTC.CharWeight = com.sun.star.awt.FontWeight.BOLD
oTC.goRight(0,false)
End if
End Sub

Sub PrikladZmenyFormatuBunky					' testuje změnit buňky - nefunguje Aligment
Dim Sesit as Object 
Dim List as Object 	
Dim Bunka as Object 
Sesit = ThisComponent						' přístup k sešitu
List = Sesit.Sheets.getByName("List1")		' přístup k List1 v sešitu
Bunka = List.getCellByposition(1,0)			' přístup do buňky B1 listů
Bunka.Value=23658							' napište číslo, (viz také NastavitHodnotu)
Bunka.NumberFormat=2						' Nastaví počet desetinných míst 2
Bunka = List.getCellByposition(2,0)			' přístup k buňkou C1
Bunka.SetString("message")					' psaní textu
Bunka = List.getCellByposition(3,0)			' přístup do buňky D1
With Bunka
.FormulaLocal="=LOI.BINOMIALE(9;15;0,5;0)"		' Zápis vzorce
.CellBackColor = RGB(255,128,64)				' Barva pozadí pro buňku
.CharFontName = "ARIAL"							' písmo
.CharHeight = 12								' velikost písma
.CharColor = RGB(255,0,0)
'http://www.openoffice.org/api/docs/common/ref/com/sun/star/style/CharacterProperties.html#CharFontStyleName
'tady je ještě hodně věcí, které se dají nastavit.
.CharWeight = com.sun.star.awt.FontWeight.BOLD
.CharPosture = com.sun.star.awt.FontSlant.ITALIC
.CharUnderline = com.sun.star.awt.FontUnderline.BOLD
.HoriJustify = com.sun.star.table.CellHoriJustify.CENTER  '(STANDARD),(BLOCK),(REPEAT),(LEFT),(CENTER),(RIGHT)
.VertJustify = com.sun.star.table.CellVertJustify.BOTTOM  '(STANDARD),(TOP),(CENTER),(BOTTOM)
.Orientation = com.sun.star.table.CellOrientation.STACKED '(STANDARD),(TOPBOTTOM),(BOTTOMTOP),text o 90° (STACKED)
End with
Bunka = List.getCellByposition(1,1)	' přístup do buňky D1
'Bunka.setString (AdresseCellule(1,1,4))	
With Bunka
.CellBackColor = RGB(255,128,128)				' Barva pozadí pro buňku
.CharFontName = "ARIAL"							' písmo
.CharHeight = 12								' velikost písma
.CharColor = RGB(10,20,40)						' Barva písma
.HoriJustify = com.sun.star.table.CellHoriJustify.CENTER  '(STANDARD),(BLOCK),(REPEAT),(LEFT),(CENTER),(RIGHT)
.VertJustify = com.sun.star.table.CellVertJustify.BOTTOM  '(STANDARD),(TOP),(CENTER),(BOTTOM)
.Orientation = com.sun.star.table.CellOrientation.STACKED '(STANDARD),(TOPBOTTOM),(BOTTOMTOP),text o 90° (STACKED)				
end With
with ThisComponent.getCurrentController().getSelection() 'odsazení v buňce
       .ParaLeftMargin = 800
       .ParaRightMargin = 500
end with	
End Sub

Sub Deklarace_1
' Číslování seěitů od nuly (bez ohledu na název - důležité je aktuální pořadí)
Dim oSheet ' značení oSheet je zřejmě tradice pro značení OpenOfficeBasic - není nutná
oSheet = thisComponent.Sheets(0) 
oSheet.getCellRangeByName("A1").String = "Input Data" 'buňky značené názvem - to je spíš nevýhodné pro iterace
oSheet.getCellRangeByName("A2").Value = 4
oSheet.getCellRangeByName("A3").Formula = "=A2*A2 + 1"
End Sub

SUB Deklarac_2 ' Značení sešitů názvem - výhoda v tom, že nezáleží na pořadí listů.
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Doc = ThisComponent
' Sheet = Doc. Sheets ( 0 ) ' Také funguje
Sheet = Doc.getSheets(0).getByName("List1")
Cell = Sheet. getCellByPosition ( 0 , 0 ) ' buňky deklarované sloupec - řádek
Cell. Value = 100
Cell = Sheet. getCellByPosition ( 0 , 1 )
Cell. String = "něco"
Cell = Sheet. getCellByPosition ( 0 , 2 )
Cell. Formula = "=A1*20"
End SUB

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

Offline

#8 5. 11. 2015 10:20:57

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

Re: Calc - Makra

Tak Vám to asi nejde upravit. Omlouvám se. Udělal jsem variantu, která se Vám asi bude hodit. Je to přesně to co potřebujete naformátovat - písmo Arial s velikostí 8. Může to být ale uděláno i jinak a s kratším kódem. Tohle je jen pro přizpůsobení - jako vzor vhodný k úpravám.

Sub FormatPodKurzorem
Dim VybranyUsek as object
SH = ThisComponent.CurrentController.getSelection().RangeAddress.Sheet 
SC = ThisComponent.CurrentController.getSelection().RangeAddress.StartColumn 
SR = ThisComponent.CurrentController.getSelection().RangeAddress.StartRow 
EC = ThisComponent.CurrentController.getSelection().RangeAddress.EndColumn 
ER = ThisComponent.CurrentController.getSelection().RangeAddress.EndRow 
VybranyUsek = ThisComponent.Sheets.getByIndex( SH ).getCellRangeByPosition(SC,SR,EC,ER)
'VybranyUsek.CellBackColor = RGB(255,128,128)		' barva pozadí pro buňky zadaná jako RGB
'VybranyUsek.CellBackColor = 16744576			' barva pozadí pro buňky zadaná jako CYMYK
'VybranyUsek.CellBackColor = -1				' barva pozadí pro buňky implicitní hodnota
VybranyUsek.CharFontName = "ARIAL"			' typ písma
VybranyUsek.CharHeight = 8				' velikost písma
End Sub

Function BarvaPozadi 'Vypíše číslo barvy pozadí buňky vlevo od testované buňky
' Zadává se v sešitě jako vzorec =BARVAPOZADI() + Enter
' Pozor - tato funkce může být spuštěna pouze 1x proto ihend po testu
' buňku s výsledkem zkopírujte a vložte zpět jen jako hodnoty a text.
' Z tohoto už číslo barvy vypreparujete snadno. 
' Doporučuji vykopírovat jen v lokálním sešitě a nespouštět nad celým Calcem
 oCell = ThisComponent.CurrentController.getSelection() 
With oCell.RangeAddress 
SH = .Sheet 
SC = .StartColumn 
SR = .StartRow
End With 
oSheet = ThisComponent.Sheets(SH) 
oCell = oSheet.GetCellbyPosition(SC-1, SR)
barva = oCell.CellBackColor
pismo = oCell.CharColor
BarvaPozadi = "Číslo barvy pozadi = " & barva & " Číslo barvy písma = " & pismo
End Function

Funkce barva pozadí je k otestování již existujících barev - když chcete zjistit jaká barva byla použita. Také se Vám asi hodí někdy v budoucnu. Já ji vykopíroval spíš omylem :-)

Editoval neutr (5. 11. 2015 10:28:49)


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

Offline

#9 10. 1. 2016 13:55:20

Marrtt
Člen
Registrace: 25. 2. 2015
Příspěvků: 115

Re: Calc - Makra

Dobrý den
Narazil jsem při ladění maker (OO 4.1.2) na následující potíže:
"ztratil" se mi list s dialogem (už 2x), naštěstí docela jednoduchým. Organizátor (Dialogy) tvrdí, že existuje (je v seznamu), takže nejde znovu vytvořit se stejným jménem, ale po snaze jej vyvolat (Upravit) se objeví prázdná strana <Žádný modul>. Vždy si kladu nejdřív otázku, co jsem udělal špatně, ale nepřišel jsem na to.
Na další problém jsem narazil, když jsem chtěl odstranit syntaktickou chybu, ale Basic tvrdošíjně odmítal pustit mne do úprav a okamžitě po zobrazení textu makra ukazoval příslušnou chybu s červenou šipkou - to je asi normální, ale po zakřížkování dialogového okna s hlášením chyby Basic opakovaně padal a shazoval OO. Dlouho jsem hledal okliku, jak se do textu makra dostat. Pokud mi k tomu dokážete něco říct, budu rád.
Děkuji

Offline

#10 10. 1. 2016 14:14:52

Marrtt
Člen
Registrace: 25. 2. 2015
Příspěvků: 115

Re: Calc - Makra

Dobrý den
To Neutr: reaguji na příspěvek č.4 - nahrávat vzorce je pakárna nad pakárny. Programování vzorců řeším tak, že je nejprve odladím přímo v CALCU a potom je teprve kompletně přenesu do programového řádku. Řešil jsem i zvěrstva typu "=IF(OR(CODE(RIGHT(U5))<48;CODE(RIGHT(U5))>57)=1;"""";IF(ISNUMBER(VALUE(U5))=1;IF(VALUE(U5)>0;INT(VALUE(U5));IF(U6=0;"""";U6));""""))", což je část algoritmu pro průběžné testování a zpracování vstupní proměnné, zda je číslem (blbovzdorné vstupní pole dialogu, které se vymaže, pokud napíšu něco nestravitelného). Tohle v podstatě nejde vymyslet přímo v programovém řádku.

Offline

#11 10. 1. 2016 16:36:02

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

Re: Calc - Makra

Pro Marrtt :
     Pokud jsem pochopil, tak Vám jde o to dostat funkční tvar vzorce :
=IF(OR(CODE(RIGHT(U5))<48;CODE(RIGHT(U5))>57)=1;"""";IF(ISNUMBER(VALUE(U5))=1;IF(VALUE(U5)>0;INT(VALUE(U5));IF(U6=0;"""";U6));"""")).
Tady to je ono :

"=IF(OR(CODE(RIGHT(U5))<48;CODE(RIGHT(U5))>57)=1;"+CHR$(34)+CHR$(34)+CHR$(34)+CHR$(34)+";IF(ISNUMBER(VALUE(U5))=1;IF(VALUE(U5)>0;INT(VALUE(U5));IF(U6=0;"+CHR$(34)+CHR$(34)+CHR$(34)+CHR$(34)+";U6));"+CHR$(34)+CHR$(34)+CHR$(34)+CHR$(34)+"))"

     Pokud se týká toho dialogu mám dojem, že se Vám dostal do knihovny pro všechny Calcy. Dialogy se zásadně umísťují do toho určitého sešitu kde mají fungovat.
     Podívejte se do Vaší knihovny "Standard". Bude to Pod křížkem Moje makra který musíte rozbalit. Tam ten postrádaný dialog nejspíš bude. To je ale špatně měl by být v knihovně Standard ale v té, která je v tom konkrétním sešitě. Proto ho nemůžete objevit a současně vytvořit nový se stejným názvem. Zavolejte NÁSTROJE > MAKRA > SPRÁVCE MAKER a tam uvidíte asi 3 položky.
- Moje makra > Standard
- Makra LibreOffice (OpenOffice)
- a nakonec položku s názvem otevřeného souboru Calc. Tam je také knihovna Standard a v ní by měl být ten Váš dialog. Ten je ale jistojistě v té první (nadřazené knihovně Moje makra > Standard).


     Musíte dávat pozor kam to ukládáte. Názvy jsou matoucí.

Editoval neutr (10. 1. 2016 16:50:20)


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

Offline

#12 11. 1. 2016 05:32:09

Marrtt
Člen
Registrace: 25. 2. 2015
Příspěvků: 115

Re: Calc - Makra

Dobrý den
Bohužel tam ten dialog opravdu nikde není - správce dialogů ho má v seznamu zařazen na správném místě pod jménem CALC souboru, kde by měl být. Ale když ho chci z té knihovny otevřít, neotevře se a dělá, že neexistuje. Už jsem ho vyrobil znovu. A předtím jsem ho vytvářel jako novou záložku v otevřeném Basicu, takže musel být na správném místě. Jediné, co mne napadá, je to, že zmizel potom, co spadl Basic i OO - takže to snad může být tím, že název zůstal viset někde v nějakém registru, ale tělo se někde zapomnělo (IT prominou).
A s tím vzorcem to byl jen příklad k tomu, že někdy je nahrávání složitějších vzorců obtížné až nemožné - musí se programovat. To co jsem tam uvedl, mám funkční (podobných logických vzorců jsem dělal už víc).
Děkuji, už se k tomu nevracejme

Offline

#13 11. 1. 2016 08:21:54

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

Re: Calc - Makra

S popisovanou chybou jsem se nikdy nesetkal. Můžete mi ten vadný soubor poslat?
      Jako "úplatek" Vám posílám postup jak nahrávat vzorce. Ten upravený vzorec jsem totiž opravdu nahrál "metelesku blesku". Nejdříve jsem to zkopíroval od Vás do sešitu, otestoval zda funguje a nahrál do makra. Následně jsem to vykopíroval z UNO makra. Postup pro LO :-
1. Rozchodíme v sešitě vzorec(e) který potřebujeme nahrát - (logicky nesmí mít chybu)
2. Uděláme si makro, ale takové, aby se vložil jen vzorec, nebo vzorce.
     A : - jeden vzorec. Kurzor postavíme do buňky se vzorcem > zapneme nahrávání maker > klepneme na editační řádek a postavíme se nejlépe na konec vzorce tak aby byl kurzor v edit řádku vidět (může to být kdekoliv, ale může se stát chyba) > nyní můžeme stisknout INSERT > ENTER > Zastavit nahrávání a správně vzorec uložit.
     B : - více vzorců v "bloku" - například celou hlavičku tabulky i s prvním řádkem vzorců. Vybereme úsek a dbáme abychom pokud možno stáli v první buňce úseku kvůli kontrole (nechceme na nějakou buňku zapomenout, nebo nahrát 2x) > zapneme nahrávání > spustíme mód editace tím že klepneme do editačního řádku > INSERT > ENTER > jsme v další buňce kde proces opakujeme > AktivaceEditMódu(AED) > INSERT > ENTER > AED > INSERT > ENTER....opakujeme dokud se nedostaneme opět na první buňku kterou už máme nahranou > zastavíme nahrávání a uložíme.
     Takto nahrané makro slouží výhradně jako zdroj "vzorců pro psaní maker". Když ho totiž spustíme, provedou se všechny zápisy postupně - ale do jediné buňky. Takže po spuštění makra najdeme v buňce kde stojí kurzor jen ten poslední vzorec (záznam).
-----------------------------
     Postup pro AOO může být trošku jiný. Původně jsem musel editační mód aktivovat dvojnásobným stisknutím INSERT, respektive DEL > INSERT. Proto je lepší stát na konci vzorce. Při aktivaci pomocí DEL uprostřed vzorce nastal problém - něco se smazalo. Na konci to nevadí. Vlastnosti záznamníku jsou u AOO trošku jiné, ale když víte co chcete a víte jak, tak to vyřešíte.
     Problémy nastávají až když potřebujete v sešitě skákat z buňky na buňku a mezi tím občas nahrát vzorec, nebo obsah + formát ap. To je ale "jiná kapitola".


     Takto nahrané vzorce (pokud je postup bez chyby) můžete spustit kdekoliv. Nejsou totiž vázané na určitou adresu. Spouštíme je buď samostatně, nebo je svážeme s makry které se postaví někam kam potřebujeme. To znamená zásah do kódu takže to už je "psaní maker".

Editoval neutr (11. 1. 2016 08:26:13)


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

Offline

#14 11. 1. 2016 08:40:47

Marrtt
Člen
Registrace: 25. 2. 2015
Příspěvků: 115

Re: Calc - Makra

Pošlu - jen doupravím jeden modul, aby to bylo funkční. Teď to nejde spustit, protože jsem něco rozebral a dávám to dohromady. Dík za návod, prostuduju si ho podrobně. Asi se mi zdálo načítání obtížné, protože na něj nejsem zvyklý a nedělám to tak. Kdo v tom má praxi, je to pro něj malina.

Offline

#15 11. 1. 2016 10:13:55

Marrtt
Člen
Registrace: 25. 2. 2015
Příspěvků: 115

Re: Calc - Makra

měl by Vám dorazit mail s odkazem na uložený soubor na app.box.com, máte do složky nastavena návštěvnická práva vč. download.
Díky

Offline

#16 12. 1. 2016 08:59:24

Marrtt
Člen
Registrace: 25. 2. 2015
Příspěvků: 115

Re: Calc - Makra

Dobrý den
uložil jsem to znovu na BOX včetně všech dialogů - měl byste dostat opět mail s pozvánkou. Nevím, co se děje, ale OO prostě nenačte dialog "rate_aktualize" (už jsem ho 3x předělal a přejmenoval), přesto ho má někde v seznamu. Když ho chci importovat ze zálohy, křičí, že už tam je, ale vidět není. Po potvrzení se přepíše, ale když OO uložím, zavřu a otevřu, zase ho nevidím. Zkusil jsem i přeinstalovat OO, chyba se opakuje. Netuším, co s tím. Děkuji

Offline

Zápatí