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

#1 28. 8. 2011 22:29:50

imcon
Člen
Místo Brno
Registrace: 16. 5. 2007
Příspěvků: 224

Vlastní (nespolehlivá) funkce v Calcu pomocí makra - VYŘEŠENO

Poradí mi někdo s vlastností OO (LO) které nerozumím?
V ODS souboru Standard modulu1 mám uloženou nějakou funkci:
.
Option VBASupport 1
Function MyTrim (txt) As Variant
  MyTrim = Replace(Replace(txt, "-", ""), " ", "")
End Function
.
Potom mám u Listu1 makro pro tlačítko, která tuto funkci používá k činnosti.
.
A těď problém:
- pokud také v buňkách použiji tuto funkci "=MyTrim(A1)", pracuje to - v buňce je výsledek
- dokument uložím
- dokument otevřu
- nyní jsou buňky, kde je funkce použitá vyplněny chybou "#NAME?"
- pokud nyní do nějaké buňky napíši vzorec "=MyTrim(A5)" atd.. nefunguje
- jakmile ale tlačítkem pustím makro, které proběhne (přitom v sobě tuto funkci používá), potom již zadání funkce "=MyTrim(A1)" funguje, buňky jdou aktualizovat
.
Proč musí být napřed funkce volána nějakým makrem jinak nefunguje?
Je nutné před použitím vždy po otevření souboru kód nějak kompilovat (co vlastně kompilace zde znamená?)?

Děkuji za radu

Editoval imcon (31. 8. 2011 09:26:40)

Offline

#2 29. 8. 2011 18:45:54

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Vlastní (nespolehlivá) funkce v Calcu pomocí makra - VYŘEŠENO

Funkce je psaná pro Excel, to že Vám alespoň částečně funguje, považujte za malý zázrak.

MSO a OO spolu v makrech nespolupracují. Po aktualizaci tlačítkem se aktualizuje i funkce, která je po otevření pro OO neznámá. Zkuste odstranit první řádek - Option VBASupport 1. Možná to pomůže

Co má funkce dělat? Můžeme zkusit ji nahradit funkcí přímo pro OO?

Zkuste přiložit soubor, třeba budeme schopni pomoci.

;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 30. 8. 2011 11:50:02

imcon
Člen
Místo Brno
Registrace: 16. 5. 2007
Příspěvků: 224

Re: Vlastní (nespolehlivá) funkce v Calcu pomocí makra - VYŘEŠENO

Díky za odpověď.
1. Nejde o konkrétní funkci, jde mi o obecné chování.
2. Podle čeho usuzujete, že je psána pro MS Office? Podle Replace? nebo VBASupport?
3. Tady odstranění VBASupport nevadí.

Ale co je důležitější: nyní jsem soubor opět otevřel, a už po otevření funguje tak jak od něj očekávám! (dříve zkoušeno na pc1 s OO v3.0, pc2 s LO v3.4; nyní na pc3 s OO v3.3 a pc1 s OO v 3.0). Tedy i když to spustím na jednom z počítačů jako dříve, pracuje funkce ihned po spuštění OK.
Proč je tomu tak nechápu...

Mám ještě jeden dotaz na kterém si lámu zuby týkající se maker a OLE, napíši to do zvláštního threadu

Offline

#4 30. 8. 2011 17:35:17

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Vlastní (nespolehlivá) funkce v Calcu pomocí makra - VYŘEŠENO

K bodu č. 2
VBA je zkratka Visual Basic for Applications což je jazyk pro programování maker v MSO více najdete zde:
VBA


OpenOffice využívá programovací jazyk StarBasic. Některé funkce se můžou shodovat, přesto jde o dva rozdílné jazyky a dva různé přístupy k objektům (dokumentům).
;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 30. 8. 2011 20:16:49

imcon
Člen
Místo Brno
Registrace: 16. 5. 2007
Příspěvků: 224

Re: Vlastní (nespolehlivá) funkce v Calcu pomocí makra - VYŘEŠENO

Díky za info.
Toto vím.
Práci takto definované funkce jsem chtěl ověřit na základě kapitoly "User defined Calc functions" knihy "Useful Macro Information For OpenOffice.org" od Andrew Pitonyaka.
Právě proto, protože máme jen jednu starou licenci MS Office 97, používáme na všech počítačích OpenOffice a rád bych u OOo zůstal i když jsou s ním občas problémy...
Nyní potřebuji naprogramovat nějaké jednoduché skripty pro práci s databází našeho skladového systému ABRA. Normálně programuji v Delphi ale tady by se mi lépe hodily skripty do Calcu, protože jsou embedded.
.
Problém nyní nemám ale označit ho jako vyřešen zatím nechci, protože vůbec nevím co se stalo, že to najednou funguje... Jen podotýkám, že restarty (a smazáním nějakých bufferů) to nemohlo být, protože počítače nevypínám, běží pořád.

Editoval imcon (30. 8. 2011 20:21:12)

Offline

#6 30. 8. 2011 21:36:56

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Vlastní (nespolehlivá) funkce v Calcu pomocí makra - VYŘEŠENO

Jakou jste měl úroveň zabezpečení maker (Nástroje-Volby-Bezpečnost-Zabezpečení maker - doporučuji Střední)? Povolil jste makra při spuštění? Pokud ne, sešit se nedostane k makrům a fcím Basicu.

Offline

#7 30. 8. 2011 22:42:08

imcon
Člen
Místo Brno
Registrace: 16. 5. 2007
Příspěvků: 224

Re: Vlastní (nespolehlivá) funkce v Calcu pomocí makra - VYŘEŠENO

Jistě, makra byla povolená, jak jsem uváděl, stačilo kliknout na button a už se to rozjelo.
Zatím to funguje.
Možná byl zakopaný pes někde v umístění kódu, viz.:
Option VBASupport 1 and function call on document opening

Editoval imcon (30. 8. 2011 22:44:50)

Offline

#8 31. 8. 2011 06:03:49

j-pastierik
Člen
Registrace: 15. 11. 2004
Příspěvků: 761

Re: Vlastní (nespolehlivá) funkce v Calcu pomocí makra - VYŘEŠENO

Pokiaľ nemáte makrá Calcu umiestnené v OO.o knižnici Standard (pozor, nie v dokumente, ale v OO.o), pri ich zápise do zošitu vo forme funkcie ("=MyTrim(A1)") ich OO.o nepozná, lebo nemá natiahnutú knižnicu. Pri opakovanom spustení ich už môže poznať a potom už chyba nevzniká.

Offline

#9 31. 8. 2011 09:25:59

imcon
Člen
Místo Brno
Registrace: 16. 5. 2007
Příspěvků: 224

Re: Vlastní (nespolehlivá) funkce v Calcu pomocí makra - VYŘEŠENO

j-pastierik napsal(a)

Pokiaľ nemáte makrá Calcu umiestnené v OO.o knižnici Standard (pozor, nie v dokumente, ale v OO.o), pri ich zápise do zošitu vo forme funkcie ("=MyTrim(A1)") ich OO.o nepozná, lebo nemá natiahnutú knižnicu. Pri opakovanom spustení ich už môže poznať a potom už chyba nevzniká.

Díky za vysvětlení, takto to asi bude. Dobré poučení pro ostatní.

Offline

Zápatí