Július Pastierik / 15. 05. 2008, 00:00
Potrebujete vytvárať, otvárať a modifikovať súbory pomocou makra? V dnešnom dieli si ukážeme funkcie pre takúto prácu.
Niekedy potrebujeme v makrách otvárať iné súbory – napríklad za účelom ich spojenia do jedného a podobne. Inokedy potrebujeme zistiť, či nejaký súbor vôbec existuje a ak nie, tak ho potrebujeme zároveň vytvoriť.
Tieto možnosti si ukážeme na príklade textového dokumentu, do ktorého budeme pridávať prvý odstavec aktuálneho dokumentu. A aby sme nezostali iba pri tomto príklade, ukážeme si aj makro, pomocou ktorého pridáme do dokumentu tabuľku. Pravdaže, týmto nie sú zďaleka vyčerpané možnosti, ide iba o príklady, ako môžeme pracovať s dokumentom bez toho, aby sme ho manuálne otvárali, ukladali a zatvárali.
Ako obvykle, v makrách sa nachádzajú komentáre a preto ich bližšie nebudeme popisovať.
REM Funkcia otvorí existujúci súbor alebo vytvorí nový súbor
REM Funkcia vráti hodnotu true, ak súbor otvorila (vytvorila)
function otvor_subor (oSubor, nazov as string, novy) as boolean
dim url as string
url=nazov
novy=not FileExists(url) ' Zistíme, či súbor existuje
if novy then
' Ak neexistuje, pripravíme si url pre nový súbor
url="private:factory/swriter"
endif
' Otvorenie existujúceho alebo vytvorenie nového súboru
oSubor=StarDesktop.loadComponentFromURL(url, "_blank", 0, Array())
otvor_subor=not isNull(oSubor)
end function
REM Procedúra pre uloženie súboru
REM Podľa parametra "novy" sa uloží buď poď existujúcim alebo novým názvom.
sub uloz_subor (oSubor, nazov as string, novy as boolean)
if novy then
' Ak máme nový súbor, uložíme hod definovaným názvom
oSubor.storeAsUrl(nazov, Array())
else
' Ak máme otvorený existujúci súbor, uložíme ho priamo
oSubor.store()
endif
end sub
REM Procedúra pre zatvorenie súboru
sub zatvor_subor (oSubor)
oSubor.dispose()
end sub
Makro pre pridanie prvého odstavca aktuálneho dokumentu do súboru „ skuska.odt“:
sub pracuj_so_suborom_1
dim dokument, kurzor, cesty as object
dim aktual_dokument, aktual_kurzor as object
dim nazov as string
dim novy, otvoreny, koniec as boolean
' Budeme otvárať (vytvárať) súbor "skuska.odt" v štandardnom pracovnom adresári ("Moje dokumenty" a pod.)
cesty=CreateUnoService("com.sun.star.util.PathSettings")
nazov=cesty.Work+"/skuska.odt"
' Nastavíme sa do aktuálneho dokumentu
aktual_dokument=StarDesktop.CurrentComponent
aktual_kurzor=aktual_dokument.text.createTextCursor
otvoreny=otvor_subor (dokument, nazov, novy)
if otvoreny then
' Ak sme otvorili/vytvorili súbor, tak
' Súbor sa správa ako "ThisComponent", preto môžeme pracovať s viditeľným kurzorom
kurzor=dokument.currentcontroller.getViewCursor()
kurzor.gotoEnd(false) ' Skočíme na koniec súboru
' Pridáme odstavec z aktuálneho dokumentu
' Skočíme na začiatok odstavca
aktual_kurzor.gotoStartOfParagraph(false)
' Označíme odstavec
aktual_kurzor.gotoEndOfParagraph(true)
' a vložíme ho do nového dokumentu
kurzor.setstring(aktual_kurzor.String)
kurzor.gotoEnd(false) ' Skočíme na koniec vloženého textu
uloz_subor(dokument, nazov, novy) ' Uložíme zmenený/vytvorený súbor
zatvor_subor(dokument) ' Zatvoríme zmenený/vytvorený súbor
endif
end sub
Makro pre pridanie tabuľky na koniec súboru „skuska.odt“. V tomto makre pre zmenu na konci súbor „skuska.odt“ nezatvoríme, ale zostaneme v ňom pre ďalšiu prácu.
sub pracuj_so_suborom_2
dim dokument, kurzor, tabulka, cesty as object
dim nazov as string
dim novy, otvoreny as boolean
' Budeme otvárať (vytvárať) súbor "skuska.odt" v štandardnom pracovnom adresári ("Moje dokumenty" a pod.)
cesty=CreateUnoService("com.sun.star.util.PathSettings")
nazov=cesty.Work+"/skuska.odt"
otvoreny=otvor_subor (dokument, nazov, novy)
if otvoreny then
' Ak sme otvorili/vytvorili súbor, tak
' Súbor sa správa aj ako "StarDesktop.CurrentComponent", preto môžeme využiť aj tieto metódy
kurzor=dokument.currentcontroller.getViewCursor()
kurzor.gotoEnd(false) ' Skočíme na koniec súboru
' A vložíme tam napríklad tabuľku – 4 riadky a 3 stĺpce
tabulka=dokument.createInstance("com.sun.star.text.TextTable")
tabulka.initialize(4,3)
dokument.Text.insertTextContent(kurzor, tabulka, false)
kurzor.gotoEnd(false) ' Skočíme na koniec vloženého textu
' Teraz môžeme vložiť údaje do tabuľky ... a nakoniec uložiť a zatvoriť súbor
' Alebo ho jednoducho nezatvoríme a budeme pokračovať v jeho úprave manuálne – príkazy stačí dať do komentára
'uloz_subor(dokument, nazov, novy) ' Uložíme zmenený/vytvorený súbor
'zatvor_subor(dokument) ' Zatvoríme zmenený/vytvorený súbor
endif
end sub
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk