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

#26 Re: Calc » Proč je rozdíl jak sešit otevřu » 21. 3. 2014 10:03:05

Tak jsem objevil tohle http://flylib.com/books/en/4.290.1.141/1/ makro listing29 je myslim to co hledám. Zřejmě ale předávám špatně proměnné a hlásí mi to chybu "NoSuchElementException" a zastaví se na příkazu oSheets = oDoc.Sheets() Situace je že otvírám sešit pro vytvoření faktury,který mimo jiné obsahuje list s názvem faktury který obsahuje linky na databázi s fakturami.
Tohle je makro které tlačítkem spustí otvírání

REM  *****  BASIC  *****

global Dcesta as string, Dsoubor as string 'Dcesta je pracovní adresář Dsoubor volí co chci otevřít
global panfce as string

Sub Faktura 'otevřít novou fakturu

dim document as object, dokument as object, list as object
dim bunka_slozka as object, bunka_soubor as object
    'if panfce="" then 'ošetřuje že lze otevřít jen jednu možnost
    'panfce="faktura"
    'endif
    'if panfce="faktura" then  
document= ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dokument=stardesktop.currentcomponent
list=dokument.sheets(0)
bunka_slozka=list.GetCellByPosition(8,35)'I36
Dcesta=trim(bunka_slozka.string)
bunka_soubor=list.GetCellByPosition(1,2)'B3
Dsoubor=trim(bunka_soubor.string)
ovladani.otevrit (""+Dcesta+""+Dsoubor+"")'Otevře sešit jako šablonu
ovladani.LinkAktu (Dcesta+"databáze/faktury.ods","faktury")'aktualizuje odkazy v listu faktury 
'ovladani.otevri ("/home/tomas/distribuce/šablony/faktura.ots")
'wait 5000
'ovladani.nastav_sablonu("faktura")
   'else
'msgbox("nejdříve ukončete práci na sešitu "+panfce+"",0,"PANEL")
   'endif
End Sub

Odtud předávám makru LinkAktu odkaz na sešit s databází a na list faktury v právě otevřené šabloně. Zřejmě tohle jsem nepochopil a LinkAktu mám předat buď jiné parametry,nebo jiným způsobem.

Makro LinkAktu:

Sub LinkAktu(optional odkaz as string, optional list as string)
  Dim oSheets          'The sheets object that contains all of the sheets
  Dim oDoc
  Dim oSheet  as object         'Individual sheet
  Dim oSheetEnum       'For accessing by enumeration
  Dim s As String      'String variable to hold temporary data
  Dim i As Integer     'Index variable
  Dim sURL As String   'URL of the document to import
  Dim oLink            'The link object

  sURL = ConvertToUrl(odkaz)
  oDoc = ThisComponent
  oSheets = oDoc.Sheets() 'tady se to zastaví a ohlásí zmíněnou chybu
  If oSheets.hasbyName(list) Then
    oLink = ThisComponent.SheetLinks.getByName(sURL)
    oLink.refresh()
    MsgBox ("List" +list+" byl aktualizován")
    Exit Sub
  End If
  oSheets.insertNewByName (list, oSheets.getCount())
  oSheet = oSheets.getByName(list)

  oSheet.link(sURL, "Sheetl", "", "", com.sun.star.sheet.SheetLinkMode.NORMAL)
 End Sub

Podle seriálu o makrech od Dana Sedláčka je to po tento příkaz správně,ale taky jsem se ze seriálu dozvěděl,že chyba nemusí být tam,kde se to zastaví.
Předem dík za další nasměrování,případně za značku slepá ulice.

#27 Re: Calc » Proč je rozdíl jak sešit otevřu » 17. 3. 2014 21:09:48

To nastaveni v casovem intervalu mi prave nejde zprovoznit. Volba automaticky je seda a nejde to prepnout. Ani mi nejde vytvorit odkaz na externi data z volby Vlozit Odkaz. Zatim jsem to vyresil tim,ze misto odkazu na databazi exportuju ty data makrem primo soucasne s exportem do databaze.

#28 Re: Calc » Proč je rozdíl jak sešit otevřu » 17. 3. 2014 15:20:35

Toho písma si jde nevšímat. Bohužel všechno co se týká LOAD a OPEN používá prakticky stejnou metodu a výsledek je taky stejný. Škoda. Ještě mě napadla automatická aktualizace,ale to mi nejde nastavit. Je tam ruční a volby jsou zešedlý. Taky nelze vložit odkaz z menu. Vyberu soubor a OK zůstane zešedlý a dostupné oblasti prázdné. Tady taky netuším co je špatně. Každej začátek je těžkej. Komplet hotová věc je zatim jen kvuli tomuhle nepoužitelná.
Dík za ochotu.

#29 Re: Calc » Proč je rozdíl jak sešit otevřu » 17. 3. 2014 02:56:46

Z toho jsem nic nevykřesal. Začal jsem zkoušet aktualizaci makrem po otevření,ale z těch dvou co jsem objevil ani jedno nefunguje uspokojivě. jedno nedělá nic a druhé vyžaduje ruční zásah. Je nějaká možnost to vést tudy?
Ta makra jsou:

sub aktualizovat
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 tento příkaz vyvolá ovládání linků a vyžaduje zásah
dispatcher.executeDispatch(document, ".uno:EditLinks", "", 0, Array())

rem tento nefunguje
dispatcher.executeDispatch(document, ".uno:RecalcPivotTable", "", 0, Array())

rem jinak jsou makra stejná


end sub

#30 Calc » Proč je rozdíl jak sešit otevřu » 16. 3. 2014 02:34:55

rejze
Odpovědí: 9

Zdravim. Nevim co může být jinak,ale když otevřu sešit makrem,tak se mi neaktualizují odkazy na data v jiném sešitu. pokud tentýž sešit otevřu ručně všechno je správně.Jak na to? Díky.

#31 Re: Calc » makro spoustene pri otevreni » 28. 2. 2014 07:31:46

Tak se skutecne ukonci program. Jako kdyz to killnu. Po aktualizaci to je jeste horsi a okno prestane odpovidat. To bude otazka spis pro linuxovy forum,ze? Kazdopadne nechapu,proc to po spusteni tlacitkam nezlobi. Jediny co me napada,ze v linuxu pokud skonci rodicovska uloha,ukonci to i vsechny potomky.

#32 Re: Calc » makro spoustene pri otevreni » 24. 2. 2014 20:19:15

Spis si myslim,ze to spadne,nez ze by,se to regulerne zavrelo. Ted si nejsem jist,jestli to nenabizi obnovu dokumentu. Nejsem ted doma. Az se k tomu dostanu zkusim to a uvidim. Pak snad zkusim neco postnout. Zatim dik.

#33 Re: Calc » makro spoustene pri otevreni » 24. 2. 2014 19:00:29

Tak docela vytržený to neni. Bylo to programovano presne takhle a jiné procedury to nevolá. Změnil jsem jen název dokumentu,který to predává jako parametr a podle kterého proběhne kontrola jestli se to otevřelo se špatnym nazvem. Žádný zavření dokumentu to neobsahuje. Makro je přiřazeno akci otevřít dokument a provádí se tedy hned. Tlačítku jsem to dal jen pro zkoušku jestli to poběží normálně a to opravdu jde dobře. Pokud zastavím běh makra před end sub zkoušel jsem to  třeba msgboxem,tabulka zústane otevřená dokud msgbox nepotvrdim. Pak už proběhne jen end sub a dokument se zavře. Po spuštění tlačítkem to funguje identicky,jen to zůstane otevřený. Možná je problém,že to bylo pro Oo a já mám Lo. Zkusim dat wait na začátek aby se stihly načíst data z provázaných dokumentů a nebo dám nakonec smyčku která bude čekat na tlačítko k uložení.

#34 Calc » makro spoustene pri otevreni » 24. 2. 2014 17:35:44

rejze
Odpovědí: 5

Zdravim. Potýkám se s problémy se šablonou,která se otevře jako "bez názvu.ods" jen dokud do ní makrem neimportuji nové údaje.  Pak už se otevírá jako "formulář.ots". V seriálu p. Gesvantnera jsem se dozvěděl,že zmíněný problém se týká linuxu a má tam na to makro,které při otevření zkontroluje název a pokud najde "formulář.ots dokument zavře a znovu otevře asTemplate. Jednoduchý a skoro funkční. Všechno proběhne,ale po skončení makra se dokument okamžitě zavře. Dokud jsem před end sub nedal wait,ani jsem nestihl vidět,že to jinak funguje správně. Pokud makro přiřadím k tlačítku a pustim ho ručně,tak to zůstane otevřený. Zakopany pes tedy bude ve spuštění při otevření. Pokud má někdo tip co s tím,předem děkuji.

#35 Re: Calc » Ovládací prvky » 29. 3. 2013 17:08:32

Díky. Zkusim to a uvidim. O makrech je tu pekny serial a uz se v tom zacinam orientovat. Zatim jsem je neřešil,protože manželka má v práci MSO a pěkně fousatý.Jenže chci se posunout dál a nakonec ani ty ovládací prvky nejsou kompatibilní,takže chci udělat komplet řešení pro LO,aby byla distribuce napojená i na sklad a tam se makrům stejně nevyhnu. Jestli to bude používat je jiná,ale já mám co řešit. ;-)
Edit:
Tak to funguje. Ještě jsem to upravil,jelikož je třeba nejen označit,ale i odznačit. K tomu jsem ještě ošetřil případ,že je v buňce jakýkoli jiný znak.


Sub AdresFunk
Dim oCell As Object
Dim s, str as string
oCell = ThisComponent.CurrentController.getSelection()
With oCell.RangeAddress
'----------------------------
SH = .Sheet
SC = .StartColumn
SR = .StartRow
End With
'----------------------------
  oDoc = ThisComponent
  oSheet = oDoc.Sheets( SH)
  s = oSheet.getcolumns().ElementNames( SC) 'vypíše alfabeteicky název sloupce
'----------------------------
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Doc = ThisComponent
Sheet = Doc. Sheets ( SH )
Cell = Sheet. getCellByPosition ( SC , SR )
If Cell. String = "" Then
Cell. String = "*"
Else
If Cell. String = "*" Then
Cell. String = ""
End If
End if
If Cell. String <> "" Then
If Cell. String <> "*" Then
Cell. String =""
End If
End If
End sub

Takže ještě jednou díky.

#36 Re: Calc » Ovládací prvky » 27. 3. 2013 13:33:34

Tak jsem to měl původně. Položka se označila hvězdičkou a parametr se změnil. Jenže dlouhodobě se mi nedaří naučit manželku s tou věcí pracovat,aby nepotřebovala "manuál" na telefonu a tak se to snažím uživatelsky zjednodušit. Klikátko mi přišlo jako dobrej nápad,ale . . .

#37 Calc » Ovládací prvky » 27. 3. 2013 12:20:02

rejze
Odpovědí: 4

Zdravím lidi. Chtěl bych se zeptat,zda lze nějak hromadně rozkopírovat ovládací prvky. Konkrétně jde o dost dlouhý seznam zboží,kde ke každé položce potřebuji přidat zaškrtávací políčko,které po zaškrtnutí změní parametr u dané položky v seznamu. Tento prvek je navázán na buňku pod ním a změna PRAVDA/NEPRAVDA mi mění ten parametr. Leč prvky mohu kopírovat po jedné řádce a aby toho nebylo málo,je ten prvek navázán na buňku ze které jsem ho zkopíroval,takže musím ještě přepisovat číslo buňky. Lze to nějak usnadnit? Díky předem.

#38 Calc » Velikost souboru » 14. 3. 2013 09:04:27

rejze
Odpovědí: 0

Zdravim. Nějakou dobu sestavuji manželce do práce sešit pro distribuci rekl.předmětů a několikrát jsem ho dle požadavků upravoval. I když vždy o pár kB narostl,měl mezi 175 a 200kb Po poslední aktualizaci ubuntu se mi aktualizovaly i LO a soubor měl po drobné úpravě najednou 2,8MB Má někdo podobnou zkušenost? Přeinstaloval jsem ručně starší verzi LO a soubor se po další úpravě smrskl z5 na původní velikost.

#39 Re: Calc » Pomoc se vzorcem VYŘEŠENO » 25. 1. 2013 11:00:58

Zdravím. Ještě se vrátím ke skrývání chybových hlášek. Problém s daňovým dokladem byl ten,že ve všech nevyplněných řádkách se skvělo #N/A a to opravdu nešlo. Nicméně v případě v případě,že kód není v databázi,je vhodné na to obsluhu upozornit i když to nezpůsobí nic horšího,než jeden prázdný řádek. Vyřešil jsem to tedy ku spokojenosti tímto

=IF(ISNA(VLOOKUP(A3;$A$118:$B$318;2;0));IF(AND(ISNA(VLOOKUP(A3;$A$118:$B$318;2;0));A3>0);"Kód není v databázi";"");VLOOKUP(A3;$A$118:$B$318;2;0))

Mám tedy chybovou hlášku srozumitelně a jen v případě neznámého kódu.
Ještě jednou díky. Začátky jsou těžký,ale je to dobrá zábava na zimní dny.

#40 Re: Calc » kopírování obsahu buněk » 24. 1. 2013 22:16:36

Děkuju. Myslel jsem si to. A ta druha možnost,tedy kopírovat obsah bez maker existuje? Stačí mi vědět zda ano,nebo ne abych se nepídil zbytečně.

#41 Calc » kopírování obsahu buněk » 24. 1. 2013 12:27:35

rejze
Odpovědí: 2

Zdravim. Zacetl jsem se do clanku p. Sedlacka o makrech a resi se tam prehledne veci ktere se mi hodi. Jenze! Vytvarim to na LO a ma to pracovat na MS excel navic lehce obstaroznim. Zajima me tedy zda makra ktera se tykaji kopirovani obsahu bunek maji sanci fungovat na excelu,ktery jeste nezna ani xlsx,pripadne jestli jde neco podobneho bez makra. Tedy,aby cilova bunka pouze,nezrcadlila obsah zdrojove,ale aby se tam vepsala,hodnota a zustala tam do pristiho pozadavku na zapis. Dekuji.

#42 Re: Calc » Pomoc se vzorcem VYŘEŠENO » 18. 1. 2013 07:46:13

Pan ip mel pravdu a puvodni vzorec funguje.
@ ip Cinsky jste nepsal,ale byl jsem presvedcen,ze porovnavam cisla,protoze jsem si tam cisla nakopiroval. Kde se tam vzala ta carka pred kody v seznamu netusim a zamerne jsem ji tam nedal.Mozna to nastalo tim,ze na tech vecech pracuji na dropboxu z ruznych pocitacu a taky z mobilu. Funkci VLOOKUP jsem si prostudoval. a funkcne upravil pro sloupec s cenou. Takze jediny co jsem puvodne nepochopil,proc tvrdite ze tam mam text a vase durazne upozorneni na ZJEVNE skutecne pomohlo. Takze dekuji. Znacim jako vyreseno.

#43 Re: Calc » Pomoc se vzorcem VYŘEŠENO » 17. 1. 2013 18:25:52

Jen k bodům B a C. Argumenty jsem zkusil zaměnit,protože to nefungovalo a nejspíš jsem to nevrátil do původního stavu. Co hledám. Porovnávám číslo načtené čtečkou čárového kódu s čísly kódů v seznamu. Číslo to být musí,neboť vstup je čárový kód.Seznam obsahuje ke každému kódu lidsky čitelné informace a vzorec má v tomto případě na základě kódu zobrazit tyto informace  vedle kódu v buňkách,odkud se kopírují na dodák.  Požadavek aby tam nebylo nic je proto,že chybové hlášky by se na výsledném daňovém dokladu špatně vyjímaly. Jelikož si seznam skladu uživatel vytvoří podle toho co v tom skladu má,nepřichází v úvahu,že by načetl kód něčeho co tam nemá,tudíž jsou chybové hlášky zbytečné a nežádoucí. Skutečně to nefungovalo,protože se v buňce B2 vedle kódu načteného do A2 nápis borůvkový čaj i přes zjevnou shodu kódů neobjevil. I tak děkuju za laskavost.

#44 Re: Calc » Maticové vzorce - žádost o posouzení » 17. 1. 2013 10:01:57

Kdyz zminujete faktorialy,vzpomel jsem si jak jsem na programovatelne kalkulacce resil faktorial cisla vetsiho nez  69. Byl to limit,ale pomoci logaritmu se mantisa pocitala a zobrazila zvlast a slo by i dost,ale s faktorialem 200 bojovala kalkulacka pul hodiny a presnost vysledku mizerna,ale pro zajimavost proc ne.

#45 Re: Calc » Pomoc se vzorcem VYŘEŠENO » 17. 1. 2013 09:45:01

lp. napsal(a)

A) Je to obyčejný vzorec

B) Ve vzorci jste prohodil argumenty

C) Záleží na tom co hledáte. V tabulce máte text, ale hledáte číslo. Pokud v tabulce budou vždy texty, lze se pojistit a konvertovat hledanou hodnotu na text ve vzorci. Třeba

""&A2

Fungovat by t melo tak,ze do bunek A2 az A20 se skenerem carovych kodu nactou pres VNC cisla tech kodu (testuji na cajich ve spizi) . V radkach A50 az A150 je seznam ktery caj ke kteremu kodu patri a kolik stoji. Kdyz tedy nactu do A2 kod boruvkoveho caje potrebuji,aby vzorec prohledal seznam a do B2 zkopiroval nazev boruvkovy caj ze seznamu. Stejnym zpusobem pak vyresim kopirovani ceny a na dalsim listu mi to predvyplni dodaci list kam uz jen rucne napisu kolik kusu ktereho caje vydavam a muzu tisknout. Cteni kodu funguje na mobilu s androidem a vzhledem k jejich rozsirenosti ma tahle vec slusny potencial. Jen jsem bohuzel v calcu zacatecnik a tak zkousim pouzit a upravit vzorce ktere najdu v podobnych pripadech. Az mi tohle pojede,zkusim to navazat na list skladu,aby se to rovnou odecitalo. Pobavim  se poucim a snad z toho bude uzitecnej nastroj pro ostatni.

#47 Re: Calc » Maticové vzorce - žádost o posouzení » 16. 1. 2013 23:59:39

Přiznám,že mě tabulky zaujaly a když za pár dní co se v tom vrtám vidím jak elegantně a jednoduchým maticovým vzorcem jde řešit věc kde kalsikou narazili na limit 512 znaků. Jsem ohromen. Určitě jsou případy,kdy se to hodí. V tom je pan ip inspirací a tohle si pro studijní účely prolezu i když tomu porozumim až časem. Dík
EDIT: Jen je škoda,že je dokument jen pro čtení.Když nic nezměnim,nic nepochopim.

#48 Calc » Pomoc se vzorcem VYŘEŠENO » 16. 1. 2013 23:24:35

rejze
Odpovědí: 13

Zdravim. Řeším úlohu najít podle kódu řádek v seznamu položek a do řádky k tomu kódu vypsat ze seznamu příslušný název položky. Tento vzorec =IF(OR(ISNUMBER(FIND($A$50:$A$150;A41;1)));B50;"") uložený Ctrl-Shift-Enter jako maticový,prohledá sloupec A zda se kód v buňce A41 shoduje s některým ze seznamu a do buňky B41 vypíše obsah B50 nebo nic když se neshoduje. Dál už si nevím rady,neb potřebuji v případě shody místo B50 vložit obsah buńky B v nalezeném řádku seznamu. Asi jsem se zatim ptal špatně,tak to snad je nyní srozumitelné a někdo poradí. Dík moc.

#49 Re: Calc » Vyhledavací vzorec - pomoc se vzorcem - VYŘEŠENO » 16. 1. 2013 15:47:29

Nechci zakládat nové vlákno,protože tohle řešení mne zaujalo a chtěl bych na něj navázat následné zpracování,jen nevím jak na to. Mám seznam asi 50ti položek a u každé čárový kód. Ke každému řádku v seznamu jsem přidal vzorec od uživatele ip a do porovnávaných buněk načítám mobilem čárový kód. Když souhlasí s některým v seznamu objeví se mi v příslušném řádku vedle položky výsledek. Toto bych potřeboval vyhodnotit a název položky ze seznamu vypsat vedle načteného kódu. Lze to nějak? Předem díky.

#50 Re: Calc » Import csv souboru makrem » 10. 1. 2013 19:51:32

Dík za ochotu. Já pracuji na libreOffice,ale dělám to pro manželku,která to v práci bude používat s excelem. Snažím se jí ušetřit práci výdejem a příjmem. I tak tam toho má nad hlavu. Musim jí ale stvořit funkční a jednoduchý udělátko. Na foru kde se diskutuje excel to zkusili a na tom to jede. Problém je tedy v kompatibilitě maker. Asi se vypravim k ní do práce a zprovoznim to nejlíp tam. Ještě jednou dík.
@neuter: Mě se makro neobjeví v openOffice,ale v LibreOffice jo Navíc v tom stav.xlsx žádný makro není.To je cílovej soubor,který se má těmi .csv aktualizovat. Je tam ještě soubor .xlsm Pokud je zdroják ten basic,tak ho můžu jedině zkopírovat do spoileru. Když se Ti makro neobjeví,nejspíš ho neuvidíš ani ve správci maker. Tam jsem ho prohlížel a zkoušel měnit,ale za jedno odpoledne co jsem do toho koukal jsem pochopil jen co k čemu slouží,ale proč to nejde v Calcu tak rychle nepochopim.

Zápatí

Používáme FluxBB