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

#1 10. 3. 2017 09:00:09

Trambus
Člen
Registrace: 20. 2. 2013
Příspěvků: 20

Vložení čistého textu, makro

Dobrý den, prosím zase o radu. Vkládám pomocí makra do dokumentu text, který je pořád stejný. Vytvořil jsem si pole a následně tlačítku přiřadil toto makro:

sub vloz_upozorneni
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(6) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Type"
args1(0).Value = 20
args1(1).Name = "SubType"
args1(1).Value = 1
args1(2).Name = "Name"
args1(2).Value = "upozorneni"
args1(3).Name = "Content"
args1(3).Value = "Upozornění: Požárně nebezpečný prostor zasahuje na sousední pozemek č.par. 401/4 a 401/4. V případě budoucí výstavby na cizí parcele v tomto požárně nebezpečném prostoru je nutno dodržet omezující požadavky ČSN 73 0802."
args1(4).Name = "Format"
args1(4).Value = -1
args1(5).Name = "Separator"
args1(5).Value = " "
args1(6).Name = "JustifyPara"
args1(6).Value = true

dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args1())

end sub

Text se mi vloží, to je v pořádku, už tak je to pro mě ulehčení, že to nemusím pořád kopírovat z vedlejšího souboru. Jen bych bral, kdyby se mi to vložilo jako prostý text, který bych mohl přímo upravit. Viz ty čísla parcelní, ty jsou u každého projektu jiná samozřejmě.

V návaznosti na to, lze nějak do makra připsat, kde přesně v dokumentu se má tento text vložit? Například řádek 15?

Děkuju za pomoc.

Offline

#2 10. 3. 2017 09:35:09

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

Re: Vložení čistého textu, makro

Otestujte toto :

sub vloz_upozorneni_verze_1
dim document   as object
dim dispatcher as object
dim sVar, sVar1, sVar2, sVar3 as string
sVar1 = "Upozornění: Požárně nebezpečný prostor zasahuje na sousední pozemek č.par. "
sVar2 = InputBox("Zadejte čísla parcel", "ĆÍSLA PARCEL") 
sVar3 = " V případě budoucí výstavby na cizí parcele v tomto požárně nebezpečném prostoru je nutno dodržet omezující požadavky ČSN 73 0802."
sVar = sVar1 & sVar2 & sVar3
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Text"
args2(0).Value = sVar
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
rem ----------------------------------------------------------------------
end sub

     Nebo lépe naformátované takto :

sub vloz_upozorneni_verze_2
dim document   as object
dim dispatcher as object
dim sVar, sVar1, sVar2, sVar3 as string
sVar1 = "Upozornění: Požárně nebezpečný prostor zasahuje na sousední pozemek č.par. "
sVar2 = InputBox("Zadejte čísla parcel", "ĆÍSLA PARCEL") +Chr(10) + Chr(9)
sVar3 = " V případě budoucí výstavby na cizí parcele v tomto požárně nebezpečném prostoru je nutno dodržet omezující požadavky ČSN 73 0802."
sVar = sVar1 & sVar2 & sVar3
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Text"
args2(0).Value = sVar
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
rem ----------------------------------------------------------------------
end sub

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 10. 3. 2017 13:59:47

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

Re: Vložení čistého textu, makro

Možná by Vás mohl inspirova pěkný příspěvek pana Valacha:
Automatický text v OpenOffice a LibreOffice

(Bez makra)

Offline

#4 22. 3. 2017 12:34:22

Trambus
Člen
Registrace: 20. 2. 2013
Příspěvků: 20

Re: Vložení čistého textu, makro

Děkuji Vám pánové, obě řešení jsem krásně rozchodil, vyzkoušel (nakonec tedy zůstal asi u jednoduššího procesu vkládámí automatického textu makrem). Děkuji oběma.

Lze vyřešit ještě prosím druhý můj dotaz a to, že se text vloží přesně na místo v dokumnetu, které nějak předem učím?

Děkuji!

Offline

#5 22. 3. 2017 12:45:28

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

Re: Vložení čistého textu, makro

Ano - makro se vloží tam kde je kurzor takže když si uděláte napříkld klávesovou zkratku (F2) tak klepnete klidně mezi text (nespíš začnete nový řádek) a stisknete F2 - a je hotovo.
     Takto nastartuje na místě ale pak se odsadí ten druhý odstavec. Myslím že to je správně, ale když ne tak stačí smazat +Chr(10) + Chr(9) a napojí se to bez odstavce.


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

#6 5. 4. 2017 08:33:08

Trambus
Člen
Registrace: 20. 2. 2013
Příspěvků: 20

Re: Vložení čistého textu, makro

Děkuji za odpověď, takto to funguje. Lze nějakou úpravou udělat, aby se text, který vkládám, vložil vždy na stejné místo? Tedy tak, abych vynechal krok s umístěním kurzoru. Momentálně vypadá makro s automatickým textem takto:


sub vloz_upozorneni
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Text"
args1(0).Value = "u"

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ExpandGlossary", "", 0, Array())
end sub

Offline

#7 5. 4. 2017 10:21:04

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

Re: Vložení čistého textu, makro

Nyní Vám nerozumím. Myslíte na pevné místo na stránce, nebo jen na novém řádku? Jde o nějaké upozornění které se má vložit například na konec stránky bez ohledu na to kde končí text - nebo jak chcete určit to konkrétní místo.


     Orientace v textu je běžně podle kapitol, odstavců, vět a znaků. Lze samozřejmě nastavit i místo jako souřadnici bez ohledu na cokoliv ale to není obvyklé. Lze to udělat na vícero způsobů ale vždy je nutné vědět kde je text a podobně.
     Jen tak cvičně - například typ "razítko" může to být vysloveně obrázek na pozadí který obsahuje určitý text a i s podpisem. Ten se vloží pod standardní text (text jde přes razítku, nebo opačně) + například "na šikmo". Nebo to bude například "časové razítko" ve formě čárového kódu + něco ale mimo text a podobně.
     Nejspíš by to asi byla sekce, nebo nějaký objekt protože když se neakceptuje místo v rámci běžného obsahu, musí to dostat na "KOTVU". Jestliže máte vícero automatických textů tak jak a kam?


     Podle toho "u" v makru soudím, že těch textů máte hodně a mají mít obecně volitelné místo, nebo jedno jediné? Mám představu změny formátu dokumentů a makra se musí předělat.


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í