Oldal: 1 / 1
Szövegformázó makró készítés
Elküldve: 2010. január 6., szerda 19:36
Szerző: matulabaacsi
Szevasztok!
Open Office-t használok és volna vele kapcsolatban egy sürgős kérdésem.
Van egy teszt szövegem txt-ben. A szerkezete a következő: 1 sor kérdés, 3 sor válaszlehetőség.
Nekem arra lenne szükségem, hogy kinyomtassam a cuccot és a kérdések legyenek kiemelve. (vastagon szedett vagy aláhúzott tökmindegy...)
A műveletet fel is vettem egy makróba (első sor HOME, majd SHIFT+END, majd CTRL+B, majd 4x lefelé nyíl hogy a következő kérdéshez lépjek), ekkor meg is volt faszányosan a makró, csak az vele a gond hogy hiába futtatom le, egyszer csinálja meg a műveletet, nem pedig a teljes dokumentumon szalad vele végig. Magyarul nem tudom hogy lehetne végteleníteni a makrót.
Elvileg valami BASIC script szerkesztő van a csomagban, de lövésem sincs mi micsoda benne. Utoljára VBscriptben okoskodtam kicsit kezdő szinten, ez meg teljesen más.
Várnám az ötletet, segítséget, mit lehet vele kezdeni, mert a tipikus programozó toolokban (mint PSpad, Notepad++) hiába van makró, szövegformázás nem lehetséges. Tudom a Perl alkalmas script nyelv ilyesféle szövegek cincálására, de nincs annyi időm hogy ebbe most beletanuljak.
Szóval? Egyéb ötletek, alkalmazások e feladatra?
Köszi!
Admin: Minden új kérdéshez készíts új hozzászólást külön, ne folytasd az előzőt.
Re: Makrókészítés
Elküldve: 2010. január 6., szerda 23:23
Szerző: Zizi64
Üdv!
Nehezen értettem meg (vagy egyáltalán nem is) a feladatot: A kérdés sor után 3 üres sor van, ahová a nyomtatványon kézzel írják majd be a választ? Mert akkor az egészet egyszerre (az üres sorokat is) vastaggá lehet tenni néhány mozdulattal.
Ha viszont a válaszok (pl. 3 választási lehetőség) már a txt fájlban is benne vannak, és azokat "kiemeletlenül" kell hagyni, akkor a mellékelt megoldást tudom hirtelen ajánlani.
Re: Makrókészítés
Elküldve: 2010. január 7., csütörtök 12:46
Szerző: matulabaacsi
Zizi64 írta:Üdv!
Nehezen értettem meg (vagy egyáltalán nem is) a feladatot: A kérdés sor után 3 üres sor van, ahová a nyomtatványon kézzel írják majd be a választ? Mert akkor az egészet egyszerre (az üres sorokat is) vastaggá lehet tenni néhány mozdulattal.
Ha viszont a válaszok (pl. 3 választási lehetőség) már a txt fájlban is benne vannak, és azokat "kiemeletlenül" kell hagyni, akkor a mellékelt megoldást tudom hirtelen ajánlani.
Szia! Köszi a választ, otthon meg fogom nézni!
Igen, a teszt.txt így néz ki:
Kérdés1?
a) válasz
b) válasz
c) válasz
Kérdés2?
...
tehát egybe van folyva a szöveg és nem olvasható normálisan (530 kérdés van, tehát nem álltam le soronként megformázni).
Szerintem jó lenne az a makro funkció az oo-ban csak "butácska"

Elősször arra gondoltam, hogy hogyan lehetne a kérdőjeleket tartalmazó sorokat megvastagítani. Elvileg Calc-ban van vmi függvény ilyenekre, de nem egyszerű megtalálni...
Bocs, ha nem volt egyértelmű a kérdésem, úgy gondoltam, hogy a tesztek általában mindenki előtt egyértelműen a kérdés + megadott válaszok formátumot jelentik.
Ha hazaérek, megnézem a javaslatod! Kösz!
Re: Szövegformázó makró készítés
Elküldve: 2010. január 7., csütörtök 13:08
Szerző: Zizi64
Üdv!
Jaaaa...!!!
A "van egy teszt szövegem" részt én úgy értelmeztem, hogy van egy szöveg, ami nem végleges, még csak próba-, teszt állapotban van...
A makró funkció szerintem nem butácska, csak bele kell mélyedni egy kicsit. (Nem csak felvenni lehet makrót, hanem szabadon írni is, ahol azt csinálsz amit akarsz (azon belül persze, amit LEHET & TUDSZ).
Re: Szövegformázó makró készítés
Elküldve: 2010. január 7., csütörtök 20:52
Szerző: matulabaacsi
Kipróbáltam a feltöltött fájlodat, de a gombra kattintva semmi sem történt!
Persze jó lenne a makro funkció, ha lehetne vele normálisan dolgozni, tehát legalább annyi, hogy ismételgesse a fájl végéig a lépéseket. Ez mindent megoldana még az olyan magamfajtának is, aki scriptben nem tud mit csinálni.
Haverom is rá lett eresztve, és azt mondja, a Notepad++ tud végtelenített makrózást. Hétvégén ki lesz próbálva, mert akkor egyszerű karaktercsereék makrózásával simán html kóddal lehetne a textet kiegészíteni. Még a végén az ő ötlete hozza a megoldást?!

Azért köszönöm a fáradozásodat, ha eredményre jutok, rögvest közzéteszem.
Re: Szövegformázó makró készítés
Elküldve: 2010. január 7., csütörtök 20:58
Szerző: Zizi64
Üdv!
Én letöltöttem egy másik gépen is, és ott is működött!
Engedélyezted a makrók futtatását?
Ha igen, akkor: ne innen (erről a honlapról) nyisd meg, hanem előbb töltsd le, aztán nyisd meg;
különben "csak olvasható"-ként nyílik meg és nem enged semmilyen változást, így a formátum változtatást sem!
25x(3+1)sornyi formázást végez a makró, ha gondolod, felrakom ide a kódot.
Re: Szövegformázó makró készítés
Elküldve: 2010. január 7., csütörtök 21:11
Szerző: matulabaacsi
Igen, a kódot megköszönném, ellenben a haver is rá volt eresztve a problematikára, és ebben a pillanatban közölte az eredményét, ami mellesleg nem igényel sok tudást.
Egyszerűen Notepad++ban csinált egy makrót karaktercserére html-kódokkal és a hosszas gondolkodás után kb 2mp alatt meglett az eredmény. (A Notepad++ tud végtelenített makrózást a fájl végéig.)
Kérdés sorok bold-al kiemelve, válaszok meg extraként sorszámozott listába szerkesztve. Egyszerű és nagyszerű, de köszi neked is a fáradságot!

Re: Szövegformázó makró készítés
Elküldve: 2010. január 7., csütörtök 21:30
Szerző: Zizi64
Üdv!
Tényleg van valami hibája a megoldásomnak, mert ha nincs nyitva másik OOo Writer fájl a példafájlom megnyitásakor, akkor tényleg nem hajlandó rendesen futni a makró, de ha már működik az OOo, mikor megnyitom ezt a példafájlt, akkor rendesen formáz.
Kód: Egész kijelölése
sub bold1
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")
'A Dim sorokat előre vettem, többször (ciklikusan) nem kell/szabad ugyanazt a változót dimenzionálni:
dim args4(0) as new com.sun.star.beans.PropertyValue
dim args5(1) as new com.sun.star.beans.PropertyValue
dim args6(1) as new com.sun.star.beans.PropertyValue
dim args7(1) as new com.sun.star.beans.PropertyValue
dim args8(1) as new com.sun.star.beans.PropertyValue
'Egyszer az elejére ugrik:
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToStartOfDoc", "", 0, Array())
'Aztán Pl. 25-ször: (kijelöl, vastagít, és 3-sorral lejjebb ugrik); a fájl végét kéne inkább figyelni,
' hogy elértük-e, de azt '/pillanat' nem tudom, hogy kell.
for i=1 to 25
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:EndOfLineSel", "", 0, Array())
rem ----------------------------------------------------------------------
args4(0).Name = "Bold"
args4(0).Value = true
dispatcher.executeDispatch(document, ".uno:Bold", "", 0, args4())
rem ----------------------------------------------------------------------
args5(0).Name = "Count"
args5(0).Value = 1
args5(1).Name = "Select"
args5(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args5())
rem ----------------------------------------------------------------------
args6(0).Name = "Count"
args6(0).Value = 1
args6(1).Name = "Select"
args6(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args6())
rem ----------------------------------------------------------------------
args7(0).Name = "Count"
args7(0).Value = 1
args7(1).Name = "Select"
args7(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args7())
rem ----------------------------------------------------------------------
args8(0).Name = "Count"
args8(0).Value = 1
args8(1).Name = "Select"
args8(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args8())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())
next i
end sub
Gyakorlatilag azt csináltam, amit te is, csak kicsit átrendeztem, és egy FOR ciklust beleírtam.