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).

 

Public Relations

SOS Security Week - interaktivní webináře

SophosOblíbený Security SOS Week je zpátky! … na přelomu června a července proběhne další ze série Security SOS Week, která vám pomůže zjistit, jak efektivně ochráníte vaši IT infrastrukturu před hackery a že malware je zpět v plné síle a i bezpečnost vašeho soukromí má dvě strany jako mince.

Pokračování ...


Siemens

Public Relations

Jak si zabezpečit servery?

DNSSECPokud chce moderní člověk plně využívat to, co mu virtuální svět internetu nabízí, musí se stále více orientovat na bezpečnost. Musí činit kroky, jež ho ochrání před riziky, jež se právě na této síti skrývají a dnes a denně uživatele ohrožují.

Pokračování ...


 
 
woo jaw demo hz