Am 16.02.20 um 11:58 schrieb Marc Haber:
>
nospa...@efbe.prima.de wrote:
>> Am 15.02.20 um 21:32 schrieb Marc Haber:
>>>
nospa...@efbe.prima.de wrote:
>>>> Am 15.02.20 um 11:41 schrieb Marc Haber:
>>>>> Hallo,
>>>>>
>>>>> ich habe hier ein Dokument, das im Wesentlichen aus jeweils
>>>>> einseitigen "Formularen" besteht, die innerhalb des Dokuments bei
>>>>> Bedarf vervielfältigt werden. Das wäre viel einfacher und weniger
>>>>> fehlerträchtig, wenn es ein einfach aufrufbares Makro gäbe, das die
>>>>> aktuelle Seite vor der aktuellen Seite vervielfältigt und den Cursor
>>>>> dann an den Anfang der Kopie stellt.
>>>>>
>>>>> Ich habe nie ein Makro für Libreoffice erstellt; wie müsste so ein
>>>>> Makro denn aussehen?
>>>>
>>>> Es gibt die Funktion Extras Makros Makro aufzeichnen (muss evtl erst
>>>> aktiviert werden unter Extras Optionen erweitert).
>>>
>>> Das scheint mir aber doch komplexer als man mit dem Aufzeichnen von
>>> Tastendrücken kommt, immerhin müsste man ja nach dem zurückliegenden
>>> Seitenwechsel suchen und dann mit gedrückter Shifttaste nach dem
>>> vorausliegenden.
>>
>> Vielleicht die Formulare als Vorlage oder Dokument speichern und als
>> Datei einfügen, oder auch autotext? Eine Funktion für ganze Seite
>> selektieren habe ich noch nicht gefunden.
>
> Autotext ist eine gute Idee, kann man da auch formatierte Texte
> hinterlegen?
Habe ich noch nicht verwendet, aber das Macro läuft:
REM ***** BASIC *****
rem getestet mit LO 6.0.7.3 Ubuntu 18.04.4 LTS
rem angepasste Makroaufzeichnung 2020-02-16 fb
rem hilfreiche doku von
https://wiki.documentfoundation.org/Development/DispatchCommands
Sub Main
End Sub
sub dupl
rem -----aktuelle Seite duplizieren
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 ----------------------------- ganze aktuelle Seite selektieren
dispatcher.executeDispatch(document, ".uno:GoToStartOfPage", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoToEndOfPageSel", "", 0,
Array())
rem ----------------------------------- und kopieren
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Count"
args5(0).Value = 1
args5(1).Name = "Select"
args5(1).Value = false
rem -------- Selektion aufheben keine bessere Idee / Funktion gefunden
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args5())
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args5())
rem -------- neue seite
dispatcher.executeDispatch(document, ".uno:InsertPagebreak", "", 0, Array())
rem --------- mit Text füllen
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
rem ------ auf Seitenanfang vorige Seite
dispatcher.executeDispatch(document, ".uno:GoToStartOfPrevPage", "", 0,
Array())
end sub
MfG
Frank