Práce s dokumenty – Ukládání, zavírání a tisk

programovani.png V tomto díle seriálu o makrech se dozvíte o rozšířených možnostech ukládání dokumentu. Naučíte se je také uzavřít a vytisknout.  

Další možnosti ukládání dokumentu

Existuje ještě několik prostředků, jak zjistit, zda je vůbec nutné dokument ukládat. Použijete je tehdy, kdy ž chcete uložit dokument, k terý byl změněn, není uložen apod. Ke zjištění našich požadavků slouží následující příkazy (vlastnosti) dokumentu:

Byl dokument změněn?

Pokud chcete zjistit, zda byl dokument po svém otevření jakkoliv upravován, použijete:

If doc.isModified then

„Pokud byl dokument změněn, pak“ a například uložíte.

Je dokument uložen?

Pro zjištění, zda jste dokument již uložili, slouží:

If doc.hasLocation then

„Pokud má dokument lokaci (umístění), pak“ – pokud má lokaci, nemusíte již ukládat, použijete například Exit sub.

Je dokument pouze pro čtení ?

If doc.isReadOnly then

Pokud je dokument pouze pro čtení, nemusíte ho ukládat.

Kombinujeme

Můžete samozřejmě zjištění těchto vlastností kombinovat:

If doc.hasLocation and doc.isModified then

Tyto vlastnosti použijete nejen při ukládání dokumentu jako nového, ale i při pouhém uložení změn.

Uložení změn v dokumentu

Pokud jste výše uvedenými vlastnostmi zjistili, že například došlo ke změnám, a dokument již máte uložen, stačí uložit změny příkazem (stejně jako [CTRL + s]):

doc.store()

Teď již umíte vytvořit nový soubor, uložit ho na novou adresu, a pokud jste v něm provedli jakékoliv, změny umíte to zjistit a změny uložit (nebo neuložit).

Zavření dokumentu

Poslední příkaz k ovládání dokumentů jako celků je příkaz close(boolean), kterým zavřete definovaný dokument.

doc.close(True)

Doporučuji používat vždy v kombinaci s výše zmíněnými příkazy pro zjištění, zda je dokument uložen a je tedy možné ho zavřít.

Uzamčení dokumentu v Calcu

Jestliže chcete ochránit dokument proti změnám (přesouvání listů...), můžete ho uzamknout. Tato volba je standardně i v nabídkách. Makrem je to velmi jednoduché. Slouží nám k tomu následující:

doc.protect("")
doc.unprotect("")
isProtected("")

Příkazem doc.protect("") uzamknete dokument bez zadání hesla.
Pokud chcete definovat heslo, upravíte příkaz na doc.protect( "Heslo").

Příkaz doc.unprotec("") funguje úplně stejně.

A pomocí isProtected("") zjistíte, zda je dokument uzamčen:

if doc.isProtected("") then

a pokud není chráněn, můžete uzamknutí nastavit.

Toto se v ám bude hodit v případě, že tvoříte šablonu, se kterou bude pracovat více lidí, a chcete zabránit určitým změnám mimo ty, které provede makro. V sešitu např. u buněk, do kterých budete makrem vkládat hodnoty a nechcete, aby tyto hodnoty byly poté ručně přepsány. Po vytvoření šablony můžete dokument uzamknout a na počátku makra pak použijete unprotect () a na konci protect ().

Jde o sešit

Poslední vlastnost, kterou si ukážeme a s níž můžete ošetřit případné chyby ( pokud je makro spuštěno např. ve Writeru a patří do Calcu ), je zjištění, zda se jedná o sešit. To zjistíte použitím vlastnosti ImplementationName. Zápis bude následující:

if doc.ImplementationName = "ScModelObj" then

Pokud je dokument sešit (ScModelObj), tak můžete spustit příkazy určené pro ovládání sešitu, jinak končíte (Exit sub).

Tisk dokumentu

Poslední, co si dnes ukáže m e, jsou ovládací příkazy pro tisk dokumentů. Zde máme dvě metody print a vlastnost printer.

Vlastnost printer

Tímto ovlivňujete tiskové vlastnosti dokumentu, např. na jaké tiskárně provedete tisk, orientace tisku, formát papíru a jeho velikost. Vlastnosti nastavujete pomocí datového pole definovaného jako com.sun.star.beans.PropertyValue. Rozměry (nastavení velikosti stránky) pak jako pole com.sun.star.awt.Size. Zde již rozměr pole zadávat nemusíte, protože je jasně daný (výška a šířka).

Dim vl_tisku (2)as new com.sun.star.beans.PropertyValue
Dim velikost As New com.sun.star.awt.Size
velikost.Width = 20000 ' tj 20 cm šířky
velikost.Height = 10000 ' tj 10 cm výšky
vl_tisku (0).Name = "Name"
vl_tisku (0).Value = "Moje_tiskárna" ' název Vaší tiskárny
vl_tisku (1).Name = "PaperOrientation"
vl_tisku (1).Value = 
com.sun.star.view.PaperOrientation . LANDSCAPE
' nebo com.sun.star.view.PaperOrientation.PORTRAIT
vl_tisku (2).Name = "PaperSize"
vl_tisku (2). Value = velikost
Doc.Printer = vl_tisku ()

Takto jste nastavili tisk na tiskárně pojmenované "Moje_tiskárna". Dále budete tisknout na šířku (LANDSCAPE – na šířku, PORTRAIT – na výšku) a pomocí PaperSize (pole com.sun.star.awt.Size) jste zadali výšku a šířku 20*10 cm.

TIP: Tisk na výšku budete nastavovat pouze tehdy, když potřebujete změnit z šířky na výšku. Jinak je nastaven automaticky. V podstatě všechny hodnoty, které nenastavíte, budou nahrazeny výchozími hodnotami. Pokud tedy nenastavíte nic, budete tisknout, jako když myší kliknete na ikonku tiskárny.

Nastavení máte a nyní k samotnému tisku.

Metoda print

Pomocí této metody ovlivňujete již tisk samotný – počet kopií, jejich řazení…

Dim tisk (3) as new com.sun.star.beans.PropertyValue
tisk(0).Name = "Pages" ' Výběr stránek
tisk(0).Value = "1, 2-5, 9" ' volby oddělujete čárkou
tisk(1).Name = "CopyCount" ' počet kopií
tisk(1).Value = 3
tisk(2).Name = "Sort" ' budete třídit?
tisk(2).Value = True ' ano
tisk(3).Name = "Wait" ' synchronizace tisku?
tisk(3).Value = True ' ano
doc.print(tisk ())

Vysvětlení některých příkazů:

tisk(0) – vypíšete strany k tisku jako text, tzn. do uvozovek, oddělujete středníkem,

tisk(1) – počet kopií zadáváte jako číslo,

tisk(2) – seřazení tisku: True – Ano / False – Ne,

tisk(3) – synchronizace tisku – nezapomeňte, pokud budete zadávat více příkazů k tisku (lze i pomocí příkazu Wait 50 – pozdrží běh na 50 milisekund), jinak tisk neproběhne, jak má.

POZOR: Při tisku sešitu Calc si dejte pozor na číslování stráne k. P okud totiž buňky přesahují do další, vytiskne se tato. Makrem nastavujete stránky k tisku, ne listy!!! V tomto případě je lepší dopředu ošetřit formát stránky.

Opět platí, že pokud neprovedete žádné volby, bude program vycházet z výchozích hodnot. 

Možnosti tisku zde nekončí, je možné tisknout pouze výběr buněk (stejně jako máte volbu v standardním tiskovém dialogu). Nastavení oblastí tisku (PrintAreas) si ukážeme až v kapitole o buňkách.

(Jako ve škole) Průměr: 1.00 | Hodnotilo: 6
 

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Daniel Sedláček

Daniel Sedláček

Amatérsky se věnuji programování maker od podzimu 2010.
Aktivní jsem na fóru od ledna 2011.
Od července 2011 spolupracuji i jako moderátor fóra.

Využívám pouze OpenOffice.org (LibreOffice nemám nainstalován).

 
 
 
woo jaw demo hz