Date: prev next · Thread: first prev next last
2018 Archives by date, by thread · List index


Am 27.07.2018 um 10:59 schrieb OoOHWHOoO:
Das Makro (s.u.)

[1] fügt nach der 2. Zeile eine Zeile ein.
[2] kopiert die Inhalte der 2. Zeile in die neu eingefügte Zeile.

Vorsicht; wenn in der 2. Zeile Verweise auf andere Zeilen (z.b. auf die
ursprüngliche Zeile 3, jetzt Zeile 4; passiert so aber auch mit jeder
beliebigen andern Zeile) stehen sollten, fällst du damit auf die
Schnauze. Denn du kopierst den jetzigen Link von z. B. 2 auf 4 nach 3,
von wo aus er natürlich ebenfalls 1 Zeile weiter als ursprünglich
gedacht (d. h. also nach 5 statt 4) verweist, usw.

Einen einfachen COPY-Befehl für Zeilen gibt es offensichtlich nicht in 
Makro Basic ( http://www.dannenhoefer.de "7.4.5 Wie kann man Zeilen oder 
Spalten kopieren ?" ).

Jein; man kann ihn einfach aufzeichnen. Zur Demonstration füll mal ein
leeres Blatt mit folgenden Werten (A1-E8):

Zeile   Buchstabe       Buchstabe       Text    Link
2       A       f       Anton   =D3
3       B       h       Berta   =D4
4       C       i       Charlotte       =D5
5       D       j       Annette =D6
6       E       k       Anna    =D7
                        Doris   

Als Makro schreibst du (das ist ein bisschen aufgepimpft, aber im
Prinzip nix anderes als "Extras => Makros => Aufzeichnen => <Markieren
des Bereichs A1:ZZ1> => Kopieren => <Rechtsklick auf Zeilenkopf von
Zeile 2> => Zeilen einfügen => <Rechtsklick auf Zeilenkopf von Zeile 2>
=> Inhalte Einfügen => <alles aus bis auf [X] Zahlen, [X] Formeln, [X]
Formate>"; unglücklicherweise zeichnen Makros nicht Plain Basic auf,
sondern UNO-Funktionen, und die sind leider nirgends vernünftig
dokumentiert; kann man also de Fakto nur per Makro-Aufzeichnen verwenden):

sub CopyXXX
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 = "ToPoint"
args1(0).Value = "$A$5:ZZ5"

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

rem --------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem --------------------------------------------------------------------
args1(0).Name = "ToPoint"
args1(0).Value = "$A$2"

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

rem --------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertRows", "", 0, Array())

rem --------------------------------------------------------------------
dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "VFT"
args4(1).Name = "FormulaCommand"
args4(1).Value = 0
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = false
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())

end sub
rem ====


Btw, das "VFT" im letzten Arrray stellt die Flags dar, die bestimmen,
was genau kopiert werden soll:

V = Value
F = Formula
T = Format

D. h. das "V" müsste für den echten Einsatz dann vermutlich raus. Was
die entsprechenden Parameter für andere Optionen wie z. B. Datum o. ä.
wären, müsstest du per Makro-Aufzeichnen ausprobieren.

Und statt A5:ZZ5 suchst du dir die Zeile bzw. den Bereich deines größten
Vertrauens [tm].

Wolfgang, UNO hassend (weil da nix, aber auch wirklich nix *vernünftig*
dokumentiert ist. Paradoxerweise /sind/ die einzelnen Methoden und
Parameter usw. ja durchaus dokumentiert, aber um diese Dokus zu
/finden/, musst du /vorher/ schon genau /wissen/, wie der Befehl und
seine übergeordneten Objekte (und deren übergeordneten Objekte usw.)
heißen, welche Parameter er hat (d. h. welche Parameterkombination du
verwenden möchtest), usw.; nur, wenn du das /eh/ schon alles weißt,
brauchst du auch keine Dokumentation mehr; völlig bescheuert :-((( )
-- 
Durch Donald Trump ist mir endgültig klar geworden: Es ist
nicht der Turm von Pisa, der schief steht, es ist die Welt!


-- 
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.