Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 10. 3. 2013 11:18:25

jelinekm
Člen
Registrace: 10. 2. 2009
Příspěvků: 6

Makro pro export do PDF

Dobrý den,

jsem v makrech úplný začátečník a potřeboval bych poradit. Mám 2 listy v Calcu, na List1 je tabulka ve které jsou umístěna data, která jsou na List2 generována do tiskové sestavy. List2 je automatizován pomocí funkce INDIRECT na základě hodnoty buňky List2.A1, při změně hodnoty a vystoupení z buňky se automaticky hodnoty v buňkách List2 mění. Počet řádků na List1 může být 5 a také 500, začíná vždy až od 2. řádku (1. řádek jsou názvy sloupců)
Potřebuji vytvořit makro, které zjistí počet řádků v tabulce na List1 ve sloupci A a poté pro každý řádek vygeneruje PDF z List2 s názvem z aktuálního řádku z List1.

Můžete mi, prosím poradit, jak na to?

Díky

Martin

Offline

#2 11. 3. 2013 14:32:39

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,930

Re: Makro pro export do PDF

Jestli tomu dobře rozumím, tak z tabulky 1 se tahají údaje, které mají individuální délku tiskové sestavy. Každý údaj má jinak "dlouhou" tiskovou sestavu. Prakticky například tabulka 1 bude obsahovat
100 údajů = 100 tiskových sestav (každá jinak "dlouhá").


Makro by pak mělo umět vyexportovat všechny tiskové sestavy v PDF tak, aby neobsahovaly zbytečně prázdné listy. otázkou je, zda se mají údaje z prvního řádku (2.list) opakovat v každé PDF stránce, nebo jen v první, nebo se nemají objevit vůbec.

Pokud jsem to správně pochopil tak potřebujete aby makro vygenerovalo tiskovou sestavu v PDF, přepsalo číslo řádku z INDIRECTU a znovu export tiskové sestavy do PDF. To opakovat dokud na listu 1 nedojede k poslednímu řádku. Je - li tomu tak potvrďte, nebo upřesněte.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 11. 3. 2013 19:10:15

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Makro pro export do PDF

Samotné makro pro export do PDF je celkem jednoduché, co je nutné vyřešit:


Jestli jsem to správně pochopil, tak List2 obsahuje vždy pouze jeden záznam (řádek z Listu1), zřejmě poslední záznam.
Potřebujete vytvořit cyklus, který bude mít za počátek druhý řádek Listu1 a za konec číslo posledního použitého řádku, který bude automaticky měnit údaje na List2 po jednotlivých řádcích List1 - dá se řešit více způsoby.


Ten export do PDF - je nutné zadat cestu - lze přímo, nebo se dá použít i adresář kde je dokument uložen. Název PDF - myslíte číslo řádku?


Makro bude při větším počtu řádků časově náročnější.


S cykly Vám pomůže tento článek Cykly v makrech. Export do PDF makrem teprve vyjde, takže nejjednodušší cesta je:

sub pdf
doc = thisComponent
adr = left (doc.url, len (doc.url)-4)+".pdf" ' prosté přejmenování dokumentu s koncovkou .pdf - je uloženo ve stejném
'adresáři jako originální dokument, 
dim podminka_filtru (0) as new com.sun.star.beans.PropertyValue
podminka_filtru (0).Name = "PageRange"
podminka_filtru (0).Value = "1-5" ' pro strany 1-5
dim podminka_exportu (1) as new com.sun.star.beans.PropertyValue
podminka_exportu (0).Name = "FilterName"
podminka_exportu (0).Value = "calc_pdf_Export"
podminka_exportu (1).Name = "FilterData"
podminka_exportu (1).Value = podminka_filtru
doc.storeToURL (adr, podminka_exportu ())
end sub

Zkuste si kód upravit a pokud nebude fungovat, vložte ho sem.
Bez dokumentu, ve kterém se má makro spouštět Vám asi víc neporadím.


;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí