Vytvoření, otevření a uložení dokumentu pomocí maker

programovani.png Ukážeme si, jakým způsobem můžete pomocí maker pracovat s dokumenty. Dostaneme se také k tisku dokumentů nebo jejich vybrané části. Možností v tomto směru je mnoho, ne všechny využijete a ne všechny si zde popíšeme, protože k tomu je přístupná oficiální dokumentace (v angličtině). Budeme se věnovat těm nejčastějším a snad přijdeme i na pár triků, kterými si můžete ulehčit práci.  

Základy

Obecně platí, že pro přístup k aktuálnímu (již otevřenému) dokumentu jsou určeny následující příkazy:

thisComponent
Stardesktop.CurrentComponent

První z nich zpřístupňuje konkrétní dokument, i přesto, že se v průběhu programu stane aktivním jiný dokument (aktivní = poslední použitý). Pokud tedy makrem otevřete nebo vytvoříte nový dokument, vrací vám tento příkaz vždy jen původní dokument, kde bylo makro spuštěno.

Druhý příkaz Stardesktop.CurrentComponent použijete pro přístup k právě aktivnímu dokumentu, bez ohledu na to, kde byl spuštěn. Tímto zápisem ovlivňujete např. makrem otevřený další dokument.

Oba příkazy lze použít i ve Writeru, pokud ale následují příkazy specifické pro některou z dalších částí OpenOffice.org, povede to program k chybě. Jak se proti takovýmto chybám zabezpečit, si také povíme.

Je nutné si tyto příkazy přiřadit k proměnné. Nejvíce používanou proměnnou je doc (nebo odoc, jako o – objekt). Můžete ale použít jakýkoliv název. Tedy:

doc = thisComponent
doc = Stardesktop.CurrentComponent

Tímto jste získali přístup k otevřenému dokumentu. Máte ale možnost takový dokument vytvořit, nebo otevřít makrem.

Tvorba dokumentu

K novému sešitu musíme identifikovat cestu URL (protože nový dokument ještě není vytvořen). Pro všechny nové sešity je platná následující URL (adresa) – "private:factory/scalc" Tato adresa je shodná pro všechny druhy dokumentů, jen údaj za lomítkem se liší dle druhu (swriter, sdraw…). Nový sešit vytvoříme příkazem:

sURL = "private:factory/scalc" 
doc = Stardesktop.loadComponentFromURL(sURL," ",0, Array())

Do proměnné sURL jste napsali adresu pro nový dokument a do doc jste přiřadili nově stvořený dokument. Nemusíte ho již nikde znovu definovat. Příkaz loadComponentFromURL slouží k „nahrání“ – otevření příslušného dokumentu.

Otevření dokumentu

Pro otevření již existujícího sešitu (souboru) použijete stejný postup jako pro vytváření nového, ale rozdíl bude v tom, že použijete URL již existujícího dokumentu. Tedy příklad pro Windows:

"C:\Documents and Settings\Dan\test.ods"

a pro Linux:

"/home/dan/Dokumenty/test.ods"

Takový zápis je ale pro program nečitelný, protože určité znaky se v zápisu URL nepoužívají a nahrazují se symbolem %. Potřebujeme tedy převést naši adresu na správný formát, kterému bude program rozumět. K tomu slouží příkaz ConvertToURL(adresa)

Zápis pak vypadá takto:

sURL = ConvertToURL("C:\Documents and Settings\Dan\test.ods")
doc = StarDesktop.loadComponentFromURL((sURL, " ", 0, Array())

Tímto příkazem otevřu na svém počítači dokument test.ods uložený v adresáři Dan v Documents and Settings.

TIP: " " tento údaj můžeme ponechat prázdný nebo vyplnit "_blanc", pokud chceme otevřít dokument v novém okně. Pokud budeme dokument otvírat skrytě, použijeme "_hidden".

Otevírání dokumentů můžete ještě navíc přizpůsobit svým požadavkům. K tomu slouží datové pole Array() na konci příkazu loadComponentFromURL. Array je jen pojmenování pro prázdné pole, zadefinujete tedy jiný název. Nejčastěji je používán Args (jako Argumenty), který používá i záznamník maker. Můžete ovlivnit, zda se otvíraný dokument otevře jako šablona, pouze pro čtení, nebo můžete zadat heslo pro otevření zamčeného dokumentu. Nejprve musíte definovat rozsah pole. Zápisem Args(0) dáváte na vědomí, že pole obsahuje jeden argument, Args(1) obsahuje dva atd.

Šablona

dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "AsTemplate"
args(0).Value = True

Pro čtení

dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "ReadOnly"
args(0).Value = True

Heslo

dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "Password"
args(0).Value = "Heslo"

Samozřejmě můžete kombinovat:

dim args(1) as new com.sun.star.beans.PropertyValue
args(0).Name = "Password"
args(0).Value = "Heslo"
args(1).Name = "AsTemplate"
args(1).Value = True

Pokud jste zde definovali datové pole args() namísto původního Array(), musíte je samozřejmě změnit i v samotném příkazu. Následující příkaz otevře zaheslovaný dokument test.ods jako šablonu.

sURL = ConvertToURL("C:\Documents and Settings\Dan\test.ods")
dim args(1) as new com.sun.star.beans.PropertyValue
args(0).Name = "Password"
args(0).Value = "Heslo"
args(1).Name = "AsTemplate"
args(1).Value = True
doc = StarDesktop.loadComponentFromURL((sURL, " ", 0, args())

Toto jsou nejčastější vlastnosti, které můžete při otevírání dokumentu ovlivnit. Je jich více, ale troufám si tvrdit, že je nebudete potřebovat.

Zjistit url

Jednoduchý způsob, jak zjistit URL u existujícího dokumentu, je toto makro, které zároveň ukáže rozdíl mezi programovým a textovým zápisem URL.

sub zjisti_adresu
doc = thisComponent
print doc.URL
print ConvertFromURL(doc.URL)
end sub

Uložení dokumentu

Když už umíte soubor vytvořit nebo otevřít, zbývá vám naučit se soubor uložit. Ukládání se řídí příkazem storeAsURL(adresa, Array()). Tento příkaz spustí stejný proces jako po klasické volbě Ulož jako ([CTRL + SHIFT + s]), s tím rozdílem, že adresu k dokumentu předáváte makrem. Pokud jste otevřeli dokument a chcete ho makrem uložit jinam, opět předáváte adresu, kam budete ukládat. Použijete stejný postup k převodu URL do správného tvaru.

sURL = ConvertToURL("C:\Documents and Settings\Dan\test.ods")
doc.storeAsURL(sURL, Array())

Array() opět dává možnosti, jak soubor uložit. Možnosti jsou stejné jako při otevírání dokumentu.

(Jako ve škole) Průměr: 1.12 | Hodnotilo: 8
 

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