Zeilen mit vordefinierten Formeln einfügen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

idefix2
**
Beiträge: 42
Registriert: Fr, 10.02.2017 14:25

Zeilen mit vordefinierten Formeln einfügen

Beitrag von idefix2 »

Mit [alt-e][e] fürge ich in meine Excel Tabelle eine leere Zeile ein.
Anschliessend markiere ich eine bestimmte Zeile (in diesem Fall die Zeile 3), in der vordefinierte Formeln eingetragen sind
Anschliessend kopiere ich diese Zeile mittels [strg-c] in die Zwischenablage.
Anschiessend klicke ich die neue leere Zeile an und kopiere mittels [strg-v] die Formeln aus der Zwischenablage in die neue Zeile.

Ich denke, das müsste so zu automatisieren sein, dass für die ganze Aktion nur ein Klick (auf einen neu zu erstellenden Button?) notwendig ist. Leider bin ich ich mit Open Office Makros überhaupt nicht vertraut. Kann mir da jemand auf die Sprünge helfen?
Thomas Mc Kie
******
Beiträge: 919
Registriert: Mo, 12.04.2010 00:37

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von Thomas Mc Kie »

Ja, geht.
Für einen ersten Eindruck kannst du den MakroRekorder nutzen (dessen Code ist aber nicht wirklich optimiert).
https://help.libreoffice.org/Common/Rec ... a_Macro/de
Und einer Schaltfläche kannst du ein Makro zuweisen
https://help.libreoffice.org/Common/Ins ... Buttons/de

Wenn du was gebastelt hast, kannst du das ja hier (als Dateianhang) online stellen, dann wird dir auch sicher mit dem Code noch weitergeholfen (oder irgendwer postet sowieso schon die Datei incl. fertiges Makro - dann entgeht dir aber der "ich hab es selber hinbekommen" Lerneffekt+Freude)

Grüße
Thomas
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von TrueColor »

idefix2 hat geschrieben: Mi, 26.04.2017 01:38[...]in meine Excel Tabelle [...]bin ich ich mit Open Office Makros überhaupt nicht vertraut
Widerspruch ;-)

Es hat sich (bei mir) als vorteilhaft herausgestellt, die zu kopierenden Elemente (also die Quelldaten), auf ein extra Tabellenblatt zu packen, da die Zelladressen dann konstant bleiben. Dieses kann man dann auch ausblenden (für die Arbeit mit dem Macrorecorder muss die aber eingeblendet werden, da der nur mit dem arbeitet, was auch der User sieht, bei richtigen Macros ist das nicht nötig, die arbeiten unter der Oberfläche).

https://wiki.openoffice.org/wiki/Docume ... ASIC_Guide

Edit: Der Ablauf ist für die geplante Umsetzung als Macro in Ordnung
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
idefix2
**
Beiträge: 42
Registriert: Fr, 10.02.2017 14:25

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von idefix2 »

Nachdem ich momentan ziemlichen Stress habe und das dringend brauchen würde, wäre ich sehr dankbar, wenn jemand dieses Makro posten würde - wenn man sich auskennt, ist das wahrscheinlich nur ein Aufwand von ein paar Minuten.

Das Problem, die Zeile (Quelle ist immer Zeile 3) sollte immer unmittelbar vor der Zeile eingefügt werden, die gerade fokussiert ist, das wird mir der Makrorekorder ziemlich sicher nicht adäquat aufzeichnen.
Thomas Mc Kie
******
Beiträge: 919
Registriert: Mo, 12.04.2010 00:37

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von Thomas Mc Kie »

idefix2 hat geschrieben: Mi, 26.04.2017 16:34wenn man sich auskennt, ist das wahrscheinlich nur ein Aufwand von ein paar Minuten.
... das wird mir der Makrorekorder ziemlich sicher nicht adäquat aufzeichnen.
Also ohne dass du mal den Makrorekorder angeworfen hast, und es mal versucht hast, werde ich (persönlich) auch nicht mehr Zeit in die Lösung deines Problems investieren.
Viele Grüße
Thomas
idefix2
**
Beiträge: 42
Registriert: Fr, 10.02.2017 14:25

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von idefix2 »

Was der Makrorecorder aufzeichnet, ist noch frustrierender als ich erwartet habe:

Code: Alles auswählen

REM  *****  BASIC  *****

sub NeueZeile
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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertRows", "", 0, Array())

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

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


end sub
Er zeichnet offenbar überhaupt keine Mausaktionen auf - Das Makro markiert daher nichts, kopiert nichts, pastet nichts .... pfff
Das einzige, was das aufgezeichnete Makro macht, wenn man es aufruft: es fügt eine neue leere Zeile an der Cursorposition ein, Die Befehle für das Copy und das Paste stehen zwar im Makrotext, aber ohne sinnvolle Parameter, und daher tun sie natürlich auch nichts sinnvolles.

Es müsste die aktuelle Zeile erkennen und sich merken, dann die Zeile 3 markieren und in die Zwischenablage kopieren, dann wieder zur gemerkten Zeile zurückgehen, eine leere Zeile einfügen und dort die vorher in die Zwischenablage kopierten Zellen eintragen. Anhand dieses über den Makrorecorder aufgezeichneten Makros komme ich überhaupt nicht weiter.

Ich weiß gar nicht, ob und wie ich eine Zeile ohne Maus per Tastatur markieren kann, aber selbst wenn ich das hinbringen würde (das wird wohl irgendwo in der Dokumentation zu finden sein) und so den Makrorecorder davon überzeugen könnte, dass die Zeile 3 zu markieren ist - wie erfährt das Makro, in welcher Zeile es ursprünglich aufgerufen worden ist, damit es den Text an die richtige Stelle kopiert? Das kann ja der Makrorecorder naturgemäß nicht mitbekommen.
Zuletzt geändert von idefix2 am Do, 27.04.2017 01:03, insgesamt 1-mal geändert.
idefix2
**
Beiträge: 42
Registriert: Fr, 10.02.2017 14:25

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von idefix2 »

Schon klar, damit ist mir leider nicht geholfen...
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von TrueColor »

Ich zitiere mich mal selber:
TrueColor hat geschrieben: Mi, 26.04.2017 09:43Es hat sich (bei mir) als vorteilhaft herausgestellt, die zu kopierenden Elemente (also die Quelldaten), auf ein extra Tabellenblatt zu packen, da die Zelladressen dann konstant bleiben.[...]
Die Cursorpositionen werden pro Tabellenblatt gemerkt.
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
idefix2
**
Beiträge: 42
Registriert: Fr, 10.02.2017 14:25

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von idefix2 »

Die Variante ist halt auch mühsam, weil man dann jede Änderung der Tabelle (wenn z.B. Spalten eingefügt oder gelöscht werden) doppelt machen muss, weil sonst die relativen Adressen in der anderen Tabelle nicht mehr stimmen.

Dazu kommt noch, dass ich dann bei der Aktion zweimal das Blatt wechseln muss, was der Makrorekorder natürlich aufnehmen müsste und was dann im Makro abgespielt würde - das würde dann jedes Einfügen eine Zeile deutlich langsamer als nötig machen und ein sehr unschönes "Flackern" des Bildschirms bewirken.

Ich bin sicher, dass es in einem Makro möglich ist, sich Zelladressen zu merken. Nur der Makrorekorder kann das natürlich nicht.
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von TrueColor »

idefix2 hat geschrieben: Do, 27.04.2017 11:20Dazu kommt noch, dass ich dann bei der Aktion zweimal das Blatt wechseln muss, was der Makrorekorder natürlich aufnehmen müsste und was dann im Makro abgespielt würde
tut er und wird es
idefix2 hat geschrieben: Do, 27.04.2017 11:20das würde dann jedes Einfügen eine Zeile deutlich langsamer als nötig machen und ein sehr unschönes "Flackern" des Bildschirms bewirken.
getestet mit 1 Zeile, ich konnte kein Umschalten, ebenso kein Flackern wahrnehmen.

Wieviele 1000 nicht-zusammenhängende Zeilen willst du denn mit 1 Macrodurchlauf aufnehmen und einfügen?
idefix2 hat geschrieben: Do, 27.04.2017 11:20Die Variante ist halt auch mühsam, weil man dann jede Änderung der Tabelle (wenn z.B. Spalten eingefügt oder gelöscht werden) doppelt machen muss, weil sonst die relativen Adressen in der anderen Tabelle nicht mehr stimmen.
IMO sollte das Spaltenlayout einer Liste ja fertig sein, bevor man sich den Kopf über andere Sachen zerbricht.
Man kann auch Aufnahme und Programmierung mischen, kann aber böse Fallstricke bergen.

https://wiki.openoffice.org/wiki/Docume ... nd_Columns
https://wiki.openoffice.org/wiki/Docume ... and_Ranges
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
idefix2
**
Beiträge: 42
Registriert: Fr, 10.02.2017 14:25

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von idefix2 »

TrueColor hat geschrieben: Do, 27.04.2017 13:53 getestet mit 1 Zeile, ich konnte kein Umschalten, ebenso kein Flackern wahrnehmen.
Auch wenn es die von mir vermuteten Performance Probleme nicht gibt, spricht nichts dafür, das in ein extra Blatt zu verschieben, weil es ist mit Sicherheit ohne Probleme möglich, sich im Makro eine Zelladresse oder eine Zeilennummer zu merken. Ich weiß nur nicht, wie das geht.
TrueColor hat geschrieben: Do, 27.04.2017 13:53 IMO sollte das Spaltenlayout einer Liste ja fertig sein, bevor man sich den Kopf über andere Sachen zerbricht.
Die Tabelle wird "nie" fertig, die Anforderungen ändern sich gelegentlich, immer wieder. Dann fällt eine Spalte weg, die nicht mehr relevant ist, oder es kommen vielleicht zwei Spalten dazu. Mit einem Verschieben der Formeln in ein anderes Sheet handle ich mir langfristig permanenten zusätzlichen Aufwand ein.

Möglicherweise würde es hier ja ausreichen, dem Aufruf

Code: Alles auswählen

dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
den richtigen zu kopierende Adressbereich mitzugeben.
Dazu habe ich dazu aber leider auch nichts gefunden. Gibt es irgendwo eine Dokumentation, in der die Parameter für diese Funktion beschrieben sind?
Die Suche nach "executedispatch" liefert in der Hilfe keinerlei Treffer.
Thomas Mc Kie
******
Beiträge: 919
Registriert: Mo, 12.04.2010 00:37

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von Thomas Mc Kie »

Hallo,
Zeile einfügen (gefunden mit google suche nach: makro openoffice zeile einfügen)
viewtopic.php?t=50673
http://www.dannenhoefer.de/faqstarbasic ... uegen.html

Zeilen bzw. Werte kopieren (gefunden mit google suche nach: makro openoffice zeile kopieren)
http://www.dannenhoefer.de/faqstarbasic ... ieren.html

Makro Schaltfläche zuweisen (gefunden mit google suche nach: openoffice makro schaltfläche zuweisen)
https://help.libreoffice.org/Common/Ins ... Buttons/de
http://www.ooowiki.de/MakrosMitEinemKlick.html

Einfach ein wenig mehr rumprobieren. Ich würde mich deinem Problem nähern, indem ich in einem neuen Dokument einfach als erstes mal versuche hinzubekommen, per Makro eine Zeile einzufügen. Wenn ich das hinbekomme, dann würde ich mich um das kopieren von Formeln kümmern (also eine Beispielformel eingeben und die an eine andere Stelle hinkopieren. Und dann als letztes den Aufruf mit einer Schaltfläche verknüfen.

Viele Grüße

Thomas
idefix2
**
Beiträge: 42
Registriert: Fr, 10.02.2017 14:25

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von idefix2 »

Weder das Einfügen einer Zeile:
idefix2 hat geschrieben: Do, 27.04.2017 00:46 Das einzige, was das aufgezeichnete Makro macht, wenn man es aufruft: es fügt eine neue leere Zeile an der Cursorposition ein,
noch das Erstellen einer Schaltfläche ist ein Problem.

Ich weiss nicht, wie ich es anstellen soll, dass ein Speicherbereich von einer fixen, vorgegebenen Adresse dorthin kopiert wird, wo sich aktuell der Cursor befindet.
Oder anders gesagt: Wie weiss das Makro, in welcher Zeile sich der Cursor befindet?
Thomas Mc Kie hat geschrieben: Do, 27.04.2017 17:23 Einfach ein wenig mehr rumprobieren.
Das ist genau die Antwort, die man sich wünscht, wenn man unter Druck ist und rasch eine Lösung braucht.
Thomas Mc Kie
******
Beiträge: 919
Registriert: Mo, 12.04.2010 00:37

Re: Zeilen mit vordefinierten Formeln einfügen

Beitrag von Thomas Mc Kie »

idefix2 hat geschrieben: Do, 27.04.2017 20:33Wie weiss das Makro, in welcher Zeile sich der Cursor befindet?
Auch da kann mit einer einfachen google suche geholfen werden (aktuelle zelle makro openoffice):
http://www.dannenhoefer.de/faqstarbasic ... ltehe.html

Code: Alles auswählen

sub getCellPosition
       oDoc=thisComponent
       ' aktive Zelle
       oCelle=oDoc.getCurrentSelection().getCellAddress()
      ' aktuelle Zeile, Index
         oRow=oCelle.Row
        '  aktuelle Spalte, Index
         oColumn=oCelle.column
end sub
Da die anderen Sachen laut deiner Aussage kein Problem sind, müsste jetzt ja alles klar sein.
Und das mit dem rumprobieren ist nicht böse gemeint, sondern ein ehrlicher Rat. Der weiterhin gilt. Such nach den Stichworten, nimm Beispielcode, probiere den aus, bastel dran rum. Ich kenn mich auch nicht groß mit OOO-Makros aus (eher in Excel), habe aber zu all deinen bisherigen Fragen auch was gefunden. Und meist kompletten Beispielcode. Nur zusammenbasteln ist deine Aufgabe.

Viele Grüße

Thomas

EDIT: Im Endeffekt kannst du dir dein Makro mit dem Code auf der Seite von dannenhoefer zusammenbasteln.
Was ich selbst auch noch testen müsste, ob sich der Fokus von der Zelle bei Klick auf eine Schaltfläche nicht auch auf die Schaltfläche ändert, und du somit das gar nicht per Schaltfläche machen kannst (dann bliebe immerhin noch eine Tastenkombi/Hotkey).
Antworten