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

#1 18. 5. 2016 08:22:49

gelo
Člen
Registrace: 18. 5. 2016
Příspěvků: 8

makro - format strany - VYŘEŠENO

Vie mi prosim niekto poradit, ako automaticky nastavit format strany (format papiera, okraje) pri vytvoreni noveho listu cez makro? Zaznam makra skonci na ".uno:PageFormatDialog". Dakujem.

Editoval gelo (26. 5. 2016 11:55:48)

Offline

#2 18. 5. 2016 08:37:49

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: makro - format strany - VYŘEŠENO

nastavení pro tisk provádím pomocí tohoto návodu http://www.openoffice.cz/doplnky/prace- … ani-a-tisk. Mám pocit že nastavení platí vždy pro celá sešit, nikoli jen pro list. Nastevní okrajů nějak nenacházím :-(


LibreOffice 5.4.

Offline

#3 18. 5. 2016 10:33:43

gelo
Člen
Registrace: 18. 5. 2016
Příspěvků: 8

Re: makro - format strany - VYŘEŠENO

Prave to riesenie mi nastavuje len aktualny list sad
Novovytvoreny ma predvolene hodnoty.

Offline

#4 18. 5. 2016 10:38:23

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: makro - format strany - VYŘEŠENO

To mě opravdu překvapuje, nastavení formátu papíru je platné pro celý sešit, tedy i pro nové listy. Nechcete sem vaše makro poslat?

EDIT: nezamněňuje se tu náhoudou pojem List a pojem Sešit? List jako součást Sešitu, Sešit jako samostatný soubor?

Editoval ludviktrnka (18. 5. 2016 12:16:47)


LibreOffice 5.4.

Offline

#5 18. 5. 2016 12:03:08

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: makro - format strany - VYŘEŠENO

gelo napsal(a)

Vie mi prosim niekto poradit, ako automaticky nastavit format strany (format papiera, okraje) pri vytvoreni noveho listu cez makro? Zaznam makra skonci na ".uno:PageFormatDialog". Dakujem.


Musí to být makrem? Nestačilo by upravit výchozí šablonu?

Offline

#6 18. 5. 2016 13:09:02

gelo
Člen
Registrace: 18. 5. 2016
Příspěvků: 8

Re: makro - format strany - VYŘEŠENO

makro je:

doc = thisComponent
Dim stranka(0) as new com.sun.star.beans.PropertyValue
Dim velkost as new com.sun.star.awt.Size
velkost.Width = 14800 ' sirka
velkost.Height = 21000 ' vyska
stranka(0).Name = "PaperSize"
stranka(0).Value = velkost
doc.Printer = stranka()


novy list (nie Sesit) vytvaram takto:

doc = thisComponent
doc.Sheets.insertNewByName("katalog",1)


Je jedno, ci najprv nastavim rozmery strany a potom vytvorim list, alebo najprv list a potom rozmery - sprava sa to rovnako. Mam LO 5.0.3.2 na xubuntu.
Ide o to, ze by som potreboval z povodneho listu (A4) vybrat udaje do noveho, z ktoreho by mal byt vystup na A5. Potreboval by som to aplikovat na viacero suborov (nie listov).

Editoval gelo (18. 5. 2016 13:11:52)

Offline

#7 18. 5. 2016 13:24:23

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: makro - format strany - VYŘEŠENO

Tak jsem to zkusil u sebe na win7 LO 5.1. a pracuje dle očekávání. Vytvoří nový list "katalog" a pokud tam dám nějaký obsah a zadám tisk, tiskne na A5. Akorát mě napadlo zkuste vymazat oblasti tisku dokument.Sheets.PrintAreas = array() 'array() je tady prázdné pole, nmusí být ani deklarované


a pak eventuelně založit novou oblast v novém listu:

dim CRA(0) as new com.sun.star.table.CellRangeAddress
sRange = "E1:N101"
CRA(0) = list_katalog.getCellRangeByName(sRange).RangeAddress
list_katalog.setPrintAreas(CRA())


LibreOffice 5.4.

Offline

#8 18. 5. 2016 15:32:34

gelo
Člen
Registrace: 18. 5. 2016
Příspěvků: 8

Re: makro - format strany - VYŘEŠENO

NO! Vysledkom je, ze v dokumente, ktory mam spracovat, vytvorim novy list. Do tohto listu skopirujem povodny obsah a stary list s udajmi zmazem... a vsetko pracuje, ako ma!
Ak sa v tom chce niekto povrtat, zahadny dokument mozem poslat mailom.

Dakujem za pomoc, "chyba byla odstranena, aniz byla nalezena".

Offline

#9 18. 5. 2016 17:42:45

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: makro - format strany - VYŘEŠENO

Je to trochu složitější.

Nejspíš se míchá nastavení stránky a nastavení tiskárny. A zřejmě to neladí. (Asi různé listy měly nastavenou různou velikost.)
Nastavit stránku a okraje pro list lze pomocí stránkového stylu. Pokud je, stačí nově vytvořenému listu tento styl připojit.

Sub Main2
Dim oDoc As Object 
Dim oSheet As Object 

Dim oStyleFamilies As Object 
Dim oPageStyles As Object
Dim oAktPageStyle As Object

	oDoc = thisComponent
	oDoc.Sheets.insertNewByName("katalog",1)
	oSheet = oDoc.getSheets.getByName("katalog")
	oSheet.PageStyle = "A5"

' Pokud je styl A5 nadefinovaný správně, je další zbytečné	
	oStyleFamilies = oDoc.StyleFamilies
	oPageStyles = oStyleFamilies.getByName("PageStyles")
	oAktPageStyle = oPageStyles.getByName("A5")

	oAktPageStyle.Width = 14800
	oAktPageStyle.Height = 21000
	
	oAktPageStyle.LeftMargin = 500
	oAktPageStyle.RightMargin = 500
	oAktPageStyle.TopMargin = 1000
	oAktPageStyle.BottomMargin = 1000
End Sub

Doladění tiskárny:

Sub Tiskarna
Dim oDoc
Dim stranka(0) as new com.sun.star.beans.PropertyValue

        oDoc = thisComponent
        stranka(0).Name = "PaperFormat"
        stranka(0).Value = com.sun.star.view.PaperFormat.A5
        doc.Printer = stranka()
End Sub

Editoval lp. (18. 5. 2016 18:00:15)

Offline

#10 19. 5. 2016 07:52:17

gelo
Člen
Registrace: 18. 5. 2016
Příspěvků: 8

Re: makro - format strany - VYŘEŠENO

toto sa mi zasekne pri riadku:

	oAktPageStyle = oPageStyles.getByName("A5")

s chybovou hlaskou:

Vyskytla sa výnimka
Type: com.sun.star.container.NoSuchElementException

Offline

#11 19. 5. 2016 08:23:28

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

Re: makro - format strany - VYŘEŠENO

To znamená že v buňce A5 není to co program očekává - definice stylu který jste měl vytvořit mezi svými styly a pojmenovat ho. Toto jméno pak makro umí načíst - ale musí existovat.


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

Offline

#12 19. 5. 2016 09:11:58

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: makro - format strany - VYŘEŠENO

Název A5 jsem použil, aby se to nemíchalo s existujícími styly. Je to styl strany vytvořený pro formátování stránky A5. Může být pojmenován i jinak.

Offline

#13 19. 5. 2016 10:03:18

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: makro - format strany - VYŘEŠENO

Můžete prosím trošku poodhalit tajemství stylů stránky? Vůbec jsem netušil že něco takového lze. A teď když to zkouším (nastavit nebo vůbec definovat jiný styl stránky než Výchozí) tak se mi to absolutně nedaří. Přestože organizační rozhraní vypadá podobně jako při nastavování stylu buňky - tedy rodičovský styl, nový název atd. ... tento dialog vůbec nereaguje. Fomát - Stránka - Organizátor prostě mlčí.

EDIT: samozřejmě to lze ve Writeru, možná v dalších modulech, ale Calc se na to moc netváří.

Editoval ludviktrnka (19. 5. 2016 10:20:00)


LibreOffice 5.4.

Offline

#14 19. 5. 2016 10:45:55

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: makro - format strany - VYŘEŠENO

O žádném tajemství nevím.

F11, klik na styly stránky, pravý klik, nový a nadefinujete, co je třeba.
Vyberete styl, klik na plechovku a nalejete ji na list.

nebo Klik na list, 2klik na vybraný styl.
nebo formát - stránka - organizátor ...

Offline

#15 19. 5. 2016 10:53:14

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: makro - format strany - VYŘEŠENO

Díky. Musím říct že tohle je pro mě úplná novinka. Přes horní menu to moc nejde, ale přes F11 ano.


LibreOffice 5.4.

Offline

#16 26. 5. 2016 11:50:29

gelo
Člen
Registrace: 18. 5. 2016
Příspěvků: 8

Re: makro - format strany - VYŘEŠENO

Len doplnim makro na vytvorenie noveho stylu. Potom uz vyssie popisovane makro od lp. funguje a urobi, co som chcel.

sub a5
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Param"
args3(0).Value = "A5"
args3(1).Name = "Family"
args3(1).Value = 8
dispatcher.executeDispatch(document, ".uno:StyleNewByExample", "", 0, args3())
end sub

Dakujem za pomoc.

Offline

Zápatí