Zeilen mit vordefinierten Formeln einfügen
Moderator: Moderatoren
Zeilen mit vordefinierten Formeln einfügen
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?
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?
-
- ******
- Beiträge: 919
- Registriert: Mo, 12.04.2010 00:37
Re: Zeilen mit vordefinierten Formeln einfügen
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
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
Re: Zeilen mit vordefinierten Formeln einfügen
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)
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)
Re: Zeilen mit vordefinierten Formeln einfügen
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.
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.
-
- ******
- Beiträge: 919
- Registriert: Mo, 12.04.2010 00:37
Re: Zeilen mit vordefinierten Formeln einfügen
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
Re: Zeilen mit vordefinierten Formeln einfügen
Was der Makrorecorder aufzeichnet, ist noch frustrierender als ich erwartet habe:
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.
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
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.
Re: Zeilen mit vordefinierten Formeln einfügen
Schon klar, damit ist mir leider nicht geholfen...
Re: Zeilen mit vordefinierten Formeln einfügen
Ich zitiere mich mal selber:
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)
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)
Re: Zeilen mit vordefinierten Formeln einfügen
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.
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.
Re: Zeilen mit vordefinierten Formeln einfügen
tut er und wird es
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?
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)
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)
Re: Zeilen mit vordefinierten Formeln einfügen
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.
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())
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.
-
- ******
- Beiträge: 919
- Registriert: Mo, 12.04.2010 00:37
Re: Zeilen mit vordefinierten Formeln einfügen
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
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
Re: Zeilen mit vordefinierten Formeln einfügen
Weder das Einfügen einer Zeile:
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?
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?
Das ist genau die Antwort, die man sich wünscht, wenn man unter Druck ist und rasch eine Lösung braucht.
-
- ******
- Beiträge: 919
- Registriert: Mo, 12.04.2010 00:37
Re: Zeilen mit vordefinierten Formeln einfügen
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
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).