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.

 
AEC Kariéra Volné pozice
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).

 

Public Relations

Chtějte to, na co se můžete spolehnout

Přemýšlíte nad tím, co byste měli udělat pro to, aby na Vaše stránky zavítalo více návštěvníků? Tak to se můžete spolehnout na jedno velice efektivní řešení.

Pokračování ...


Tiskárna Brno (CCB)
 
 
woo jaw demo hz