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ů: 52

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ů: 3,468

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

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

#3 10. 3. 2017 13:59:47

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

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ů: 52

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ů: 3,468

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.


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

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

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

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ů: 3,468

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.


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

Zápatí