Július Pastierik / 25. 09. 2008, 00:00
Potrebujete vložiť aktuálny dátum a čas do zošitu tabuľkového procesora Calc alebo do textového dokumentu tak, aby sa viac nemenili? Naprogramujte si jednoduché makro, ktoré to dokáže.
Vo vytváraných dokumentoch potrebujeme mať častokrát vložené dátumové a časové údaje. V textovom dokumente modulu Writer túto možnosť nájdeme ukrytú v menu „Vložiť – Pole – Dátum“ a „Vložiť – Pole – Čas“. Tieto polia majú však nevýhodu – nedajú sa v prípade potreby editovať a navyše, V module Calc, túto možnosť nenájdeme vôbec.
Z uvedených dôvodov si naprogramujeme makro, pomocou ktorého dokážeme tieto údaje vkladať. Aby sme nemuseli programovať osobitné funkcie pre modul Writer a pre modul Calc, makro naprogramujeme tak, že budeme rozoznávať, aký druh dokumentu máme práve otvorený.
Podobne, ako v ostatných dieloch tohto seriálu, sú makrá dostatočne okomentované a preto ich nemusíme podrobnejšie vysvetľovať. Ešte dodajme, že do textového dokumentu sa vloží dátum vo formáte DD.MM.RRRR (deň.mesiac.rok) a čas vo formáte HH:MM:SS (hodiny_minúty_sekundy). V tabuľkovom procesore závisí formát od nastaveného formátu zobrazenia príslušnej bunky. Samozrejme, pre pohodlné vkladanie je vhodné, aby sme si procedúry priradili k nejakej klávesovej skratke alebo zaradili do menu či panelov nástrojov.
REM Makro pre vloženie aktuálneho dátumu na bunku (Calc) alebo pozíciu (Writer), kde sa nachádzame
sub Vloz_Datum
dim dokument, bunka as object
dim teraz, datum, cas as string
dim i as integer
teraz=now ' Aktuálny dátum a čas ako reťazec vo formáte "dd.mm.rrrr hh:mm:ss"
i=instr(teraz," ") ' Pozícia, kde je oddelený dátum a čas
datum=left(teraz,i-1) ' Dátum
REM Časť pre CALC
if ThisComponent.supportsService("com.sun.star.sheet.SpreadsheetDocument") then
' Funkcia vloží dátum do aktuálnej bunky zošitu v Calcu
' V Calcu je bunka, na ktorej sa nachádzame vybraná automaticky
dokument=ThisComponent.getCurrentSelection() ' Aktuálny výber
bunka=dokument.getCellByPosition(0,0) ' Aktuálna bunka
bunka.value=datevalue(datum) ' Vloženie dátumu ako hodnoty
endif
REM Časť pre WRITER
if ThisComponent.supportsService("com.sun.star.text.TextDocument") then
' Funkcia vloží dátum na aktuálnu pozíciu vo Writeri
dokument=ThisComponent.currentcontroller.getViewCursor() ' Viditeľný kurzor
dokument.collapseToEnd() ' Zrušíme prípadný výber (označený text)
teraz=dokument.getstring() ' Odpamätáme si aktuálny reťazec kde sa nachádzame s kurzorom
dokument.setstring(teraz+datum) ' a vložíme odpamätaný aktuálny reťazec + dátum
dokument.collapseToEnd() ' Skočíme na koniec vloženého dátumu
endif
end sub
REM Makro pre vloženie aktuálneho času na bunku (Calc) alebo pozíciu (Writer), kde sa nachádzame
sub Vloz_Cas
dim dokument, bunka as object
dim teraz, datum, cas as string
dim i as integer
teraz=now ' Aktuálny dátum a čas vo formáte "dd.mm.rrrr hh:mm:ss"
i=instr(teraz," ") ' Pozícia, kde je oddelený dátum a čas
cas=right(teraz,len(teraz)-i) ' Čas
REM Časť pre CALC
if ThisComponent.supportsService("com.sun.star.sheet.SpreadsheetDocument") then
' Funkcia vloží čas do aktuálnej bunky zošitu v Calcu
dokument=ThisComponent.getCurrentSelection() ' Aktuálny výber
bunka=dokument.getCellByPosition(0,0) ' Aktuálna bunka
bunka.value=timevalue(cas) ' Vloženie času ako hodnoty
endif
REM Časť pre WRITER
if ThisComponent.supportsService("com.sun.star.text.TextDocument") then
' Funkcia vloží čas na aktuálnu pozíciu vo Writeri
dokument=ThisComponent.currentcontroller.getViewCursor() ' Viditeľný kurzor
dokument.collapseToEnd() ' Zrušíme prípadný výber
teraz=dokument.getstring() ' Odpamätáme si aktuálny reťazec
dokument.setstring(teraz+cas) ' a vložíme odpamätaný aktuálny reťazec + čas
dokument.collapseToEnd() ' Skočíme na koniec vloženého času
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