Gondoltam arra, hogy a makrót beteszem a Saját makrók és párbeszédablakok -> Standard ->Module1 helyre, de mivel több gépről használnám hálózati meghajtóról, az minden gépen makrómásolgatást igényelne.Hogyan érem el azt a makrót, ami ezekben van?
1. Pedig ez az egyik, és ráadásul a legbiztosabban működő megoldás.
Létezik arra megoldás, hogy automatikusan másold a makróidat egy adott gépen a LO/AOO Standard könyvtárába... Itt volt erről szó, igaz a megvalósított makró az EGÉSZ Standard könyvtárat másolja, nem csak egyes makrókat, de biztos ki lehet hámozni a kódból alkalmazható részleteket:
https://forum.openoffice.org/hu/forum/v ... =16&t=1076
Biztosan tudod, hogy AUTOMATIKUSAN csak a "Standard" nevű könyvtárak töltődnek be a memóriába, csak az azokban lévő függvényeket, eljárásokat tudod külön betöltési procedúra nélkül használni. De van lehetőség más (nevű) könyvtárakban is tárolni a makrókódot, csak akkor gondoskodni kell a betöltésükről a futtatásuk előtt.
További ötleteim:
2. Ne sablonfájlba, hanem dokumentumfájlba tedd a makrót, annak megnyitáskor már létezik URL-je. Más néven menteni meg ezt is tudod makró által, akár a megnyitás után rögtön is (ha attól félnél, hogy valaki megváltozott, vagy hibás állapotban "visszamentené" az eredeti helyére a fájlodat).
3.: Ha mégis a sablonfájl az egyedül üdvözítő megoldás számodra valami miatt, akkor az automatikus megnyitás után mentsd el a sablonfájl (program által) egy adott néven, dokumentumként/másik sablonként valami "temp" könyvtárba, aminek te határozod meg az elérési útvonalát. A "frissen megnyitott" - NévtelenX - nevű dokumentumot is "meg lehet fogni" makrókóddal, ha a tartalmát akarod módosítani. Azt sajnos nem tudom, hogy ez az elérési lehetőség hogyan alkalmazható a dokumentumon belül lévő makrókönyvtárra.
Kód: Egész kijelölése
oDocB as object
oProp(0).Name="AsTemplate"
oProp(0).Value=True
oProp(1).Name="MacroExecutionMode"
oProp(1).Value=com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN
sUrl = convertToURL(sMAPPA & "/" & sSABLON)
oDocB = StarDesktop.loadComponentFromURL( sUrl, "_blank", 0, oProp())
Ezután már hivatkozhatsz az oDocB-re, mint megnyitott dokumentumra, akkor is, ha még nincs saját URL-je (még nincs mentve). De mondom még egyszer, azt nem tudom, hogy a dokumentumban lévő "Saját" makrókönyvtárat (Nem a "Standerd"-ot) így be lehet-e tölteni a memóriába.
Információk a témában:
https://wiki.openoffice.org/wiki/Docume ... a_function
https://forum.openoffice.org/en/forum/v ... 20&t=60432
https://wiki.openoffice.org/wiki/Docume ... from_Basic
Utóbbiból ajánlom figyelmedbe az alább idézett részt:
Application library containers can be accessed from document-embedded Basic libraries using the GlobalScope property, for example, GlobalScope.BasicLibraries.Library1.
Ez mintha arról szólna, hogy egy dokumentumból is lehet betölteni programkód által egy NEM "Standard" nevű könyvtárat.
4. Tedd a kiindulási dokumentumba az összes makródat. Lehet egy Writer fájlban is Calc fájlra vonatkozó makró is, ezt semmi nem tiltja...
5. Írd meg kiterjesztésként a makróidat, akkor is könnyebb valamivel a terjesztésük a különböző gépek között.