in Calc per Makro Zellen in die erste freie Zeile der Spalte A

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von peterauscalw » Di, 25.09.2018 23:17

Hallo mikeleb,
muss Dich noch in einer anderen Sache um Rat fragen, bin aber nicht sicher ob das auch hierher gehört.
Möchte ja die Prozedur die LO-Datei "dblog-testprot-zeitsteuerung.ods" per diesem script in crontab starten :

#!/bin/sh
#
DEVICE=:0 soffice -o /home/fhemlog/Hauslog/dblog-testprot-zeitsteuerung.ods
sleep 10
sudo pkill soffice
exit

mit dem Kommando direkt in der Kommandozeile :

DEVICE=:0 soffice -o /home/fhemlog/Hauslog/dblog-testprot-zeitsteuerung.ods

funktioniert das auch, aber nicht aus dem script.
BG Peter

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von mikeleb » So, 23.09.2018 20:36

Hallo Peter,
das kann man. Allerdings ist dadurch nicht die Problematik des Kopierens nach 22:00 Uhr gelöst. Die csv-Daten müssen ja auch vorliegen, wenn das Makro gestartet wird.
Man kann natürlich beim Öffnen der Datei per Makro die csv einlesen, das Datum vergleichen und wenn ein neueres Datum vorliegt, die Daten übertragen. Damit würde man bei geöffneter Datei allerdings nicht mitbekommen, ob zwischenzeitlich eine neuere csv vorliegt.

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von peterauscalw » So, 23.09.2018 20:22

Hallo mikeleb,
bitte um Entschuldigung, dass Deine Antwort so lange unbeantwortet blieb. Mußte meine Frau für ein paar Tage nach Serbien begleiten und kann Deinen Vorschlag erst ab heute probieren.
Zu Deiner Beschreibung habe ich gleich eine Frage - Du prüfst den Eintrag der letzten kopierten Zeile auf den aktuellen Tag, könnte man das gleich in dem bestehenden Makro abfragen und den Kopiervorgang abhängig davon - einleiten ?
Also ist letzte Zeile A heutiges Datum ? Ja = nicht kopieren, Nein = kopieren ?
LG Peter

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von mikeleb » So, 16.09.2018 13:24

Hallo Peter,
ein Makro per Wenn()-Funktion auszulösen ist (m. W.) nicht so ohne weiteres möglich. Dazu kommt, dass der Moment 22:00 Uhr so nicht existiert (man müsste ihn auf die Sekunde genau oder noch mehr festlegen).
Wenn die Datei nicht nur um 22:00 Uhr aufgerufen wird, dann muss die Zeitsteuerung in der Datei implementiert werden. Dazu habe ich mal eine geniale Idee gefunden (leider weiß ich nicht mehr wo :( ), die ich auf dein Problem angepasst habe: Auf einer Extratabelle ("dummy") wird zunächst ein Bereich definiert (A1 heißt "dummybereich"). Beim Start der Datei wird nun eine Verknüpfung auf die eigene Datei angelegt und zwar so, dass nach einem festgelegten Zeitintervall der Wert aus dummy.A1 in dummy.B2 geschrieben wird (welcher Wert in A1 steht ist dabei vollkommen egal). Die Zelle dummy.B2 wird nun auf Änderungen überwacht (ein modifyListener angelegt). Jedesmal, wenn der wert in dummy.B2 geschrieben wird, wird nun das Makro MyApp_Modified ausgelöst. Hier erfolgt der Vergleich mit deiner gewünschten Zeit und wenn dies passt, werden die Daten eingelesen (csv_lesen). Zur Sicherheit habe ich noch ein Test eingebaut, ob an der letzte Eintrag auch von diesem Tag stammt. Dann würde kein erneuter Eintrag erfolgen.
Damit nicht ständig die Verknüpfung aktualisiert wird, habe ich das Zeitintervall mal 300 s (5 min) eingestellt und das Zeitfenster von 22:00 bis 22:06. Innerhalb dieses Zeitfenster sollte also mit Sicherheit mind. 1x die Datenübername angestoßen werden.
Dateianhänge
dblog-testprot neu zeitsteuerung.ods
(108.54 KiB) 153-mal heruntergeladen

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von peterauscalw » Fr, 14.09.2018 22:57

Hallo mikeleb,
Dein Makro ist die optimale Lösung, nur habe ich das Problem, daß bei jeder informellen Öffnung der Datei ein neuer Eintrag erzeugt wird.
Dieser Eintrag sollte nur einmal am Tag um 22:00 Uhr eintreten.
Würde nun gerne den Vorschlag einbringen per Abfrage einer Zelle den Start des Makros zu steuern, also in BA7 per :
=jetzt() = Datum-Zeit
in Zelle BA8
=stunde(BA7) = 22 (Beispiel) Formel = BA8*24 = 528
Eingabe Sollzeit 22 in BB9 Formel = BB9*24 = 528
nun Zellwertbestimmung in BB10 mit :
=wenn(BA8=BB9;1;2)

sollte das Makro erst bei BB10 = 1 starten !!
kann man das in das makro einfügen ?
ich hoffe,daß ich mich einigermassen verständlich ausgedrückt habe.
Freue mich auf Deine weitere Unterstützung :shock:
LG Peter
kenne die Ostsee von Kappeln an der Schlei bis Usedom (Heringsdorf)
wo kann ich Dich vermuten ?

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von mikeleb » Di, 11.09.2018 22:20

Hallo Peter,
schön, wenn es hilft und macht, was es soll (nämlich Dinge vereinfachen).
Mir hat dieses Forum (und andere) so viel beigebracht, dass ich nun wohl etwas weitergeben kann - ist nur ein Hobby von mir.
Fragen gehören hier her!

Grüße von der Ostsee an den Schwarzwald,
mikeleb

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von peterauscalw » Di, 11.09.2018 20:36

Hallo mikeleb,
wie schüttelt man so eine Lösung aus dem Ärmel ??? :shock: :shock: :shock:
Bin überwältigt, darf ich fragen was Du in Deinem richtigen Leben machst ?
Ich habe fast 45 Jahre lang Fernmeldeämter von analog (Hebdrehwähler) bis digitale Vermittlungsstellen für die DTAG gebaut und als Revisor in Betrieb genommen, bin nun 72 Lenze und es macht mir immer noch Spass mit meiner FHEM Haussteuerung meine Frau zu überraschen oder auch zu ärgern wenn Ihre Füsse zu kalt werden.
Ich bedanke mich auf das herzlichste und würde mich freuen wenn ich wieder mit "unqualifizierten" Fragen nerven darf - aber das hält mich eben auf Trab.
Wenn ich fragen darf aus welcher Ecke Du kommst ? War ja in meinem Job bundesweit auf Achse.
Beste Grüße aus der Hesse-Stadt Calw im Nordschwarzwald von Peter

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von mikeleb » Mo, 10.09.2018 23:00

Hallo,
unter der Voraussetzung, dass die csv-Datei immer so aufgebaut ist, habe ich mal ein Makro gebastelt, das die Werte der csv-Datei ausliest und unter die letzten Werte in den Spalten A-H schreibt. Dadurch wird die ganze Verknüpfungssache und die Formelgeschichte in den Spalten ab AU überflüssig.
Das Makro ist an das Ereignis "Dokument öffnen" gebunden. Wenn du Datei also per cron zeitgesteuert öffnest, holt sie sich die Werte aus der csv (und könnte dann auch gleich wieder geschlossen werden).
Voraussetzung ist, dass die csv-Datei im gleichen Verzeichnis, wie die Protokolldatei (dblog-testprot neu.ods) liegt. Wenn nicht, muss die Codezeile

Code: Alles auswählen

sFile=convertToUrl(Ordnerpfad(odoc) & "erspi-dblog.csv"
angepasst werden.
Teste mal, ob ich dich richtig verstanden habe.
Dateianhänge
dblog-testprot neu.ods
(95.24 KiB) 139-mal heruntergeladen

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von peterauscalw » So, 09.09.2018 23:38

Hallo mikeleb,,
was mich noch nervt ist die Tatsache, daß ich mit dem auf meinem Raspi 2 neu installierten LibreOffice calc keine Verknüpfung einfügen kann.
Das funktioniert bis zur Auswahl der zu verknüpfenden Datei und dann ist der "OK" Button ausgegraut.
Auf meinem WIN 10 klappt das alles. Die Dateiberechtigung steht auf pi und chmod auf 777.
Hast Du hier evtl. auch einen Tipp ?
Gruß Peter

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von peterauscalw » So, 09.09.2018 23:31

Hallo mikeleb,
sende Dir jetzt mal die erspi-dblog.csv und die dblog-testprot.ods im Anhang
Gruß Peter
Dateianhänge
dblog-testprot.ods.zip
(120.96 KiB) 127-mal heruntergeladen
erspi-dblog.csv.zip
(233 Bytes) 118-mal heruntergeladen

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von peterauscalw » So, 09.09.2018 22:57

Hallo mikeleb,
Entschuldigung habe die vorherige Nachricht übersehen.
mit diesen Formeln :

=INDEX($AU$2:$AU$25;(VERGLEICH("tag";$AX$2:$AX$25;0)))
=INDEX($AV$2:$AV$25;(VERGLEICH("tag";$AX$2:$AX$25;0)))
=INDEX($AY$2:$AY$25;(VERGLEICH("ht";$AX$2:$AX$25;0)))
=INDEX($AY$2:$AY$25;(VERGLEICH("nt";$AX$2:$AX$25;0)))
usw.
hole ich die Daten aus dem verknüpften Bereich aus AU2:AX15 , somit habe ich immer den richtigen Wert in der vorgesehenen
Reihenfolge auf die zu kopierende Zeile ab Spalte A .

Gruß Peter

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von peterauscalw » So, 09.09.2018 22:44

eigentlich nicht, die dblog-testprot.ods soll per crontab um 21:58 gestartet werden, die Daten von erspi-dblog.csv entgegennehmen und wieder mit save geschlossen werden.

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von mikeleb » So, 09.09.2018 21:55

Hallo Peter,
wenn du die Datei in erspi-dblog.csv.zip umbenennst sollte der Upload klappen.
AU2:AX15 sind 4 Spalten und 14 Zeilen. BA1:BH1 sind 1 Zeile und 8 Spalten. Welche Werte aus AU2:AX15 möchtest du in BA1:BH1 bzw. schlussendlich in Spalte A-H haben?
in BH7 möchte ich die gewünschte Startzeit 22:00 einstellen
Ich vermute jetzt mal, dass die Datei rund um die Uhr offen ist?

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von peterauscalw » So, 09.09.2018 21:39

Hallo mikeleb,
bin wieder im Land.
Lege die erspi-dblog.csv direkt ab da das hinzufügen als .csv abgelehnt wird :

timestamp device value
2018-09-09 20:59:07 PV_tag 31.208
2018-09-09 20:59:01 E_ht 14353.616
2018-09-09 20:59:02 E_nt 102295.877
2018-09-09 20:59:03 PV_ges 35196.543
2018-08-20 23:26:34 IT_vhs 21.5
2018-09-09 21:00:06 PV_esp 25313.179

diese Daten werden über die Verknüpfung nach AU2:AX15 verbunden und über BA1:BH1 in die gewünschte Struktur gebracht und nach A... kopiert.
Habe das so gemacht weil die Reihenfolge der Daten in die erspi-dblog.csv durch die mysql Abfrage abweichend erfolgt.
Deshalb wollte ich nochmal Deinen Vorschlag aufgreifen, durch die Abfrage einer Zelle in der .ods das Makro zu starten.
Hier versuche ich gerade mit :
=jetzt() die aktuelle Uhrzeit in z.B. BH6
in BH7 möchte ich die gewünschte Startzeit 22:00 einstellen, und mit
=wenn(BH6=BH7;"1";"2") den abzufragenden Startpunkt definieren.
Klappt aber nicht, weil die Werte komplett unterschiedlich dargestellt werden :
=JETZT() = 21:22 20:00:00
43352,890380463 0,833333333333333
=wenn(BH6=BH7;"1";"2") = 2
Wahrscheinlich mache ich das alles ziemlich kompliziert. Bestimmt hast Du da eine bessere Idee.
LG Peter

Re: in Calc per Makro Zellen in die erste freie Zeile der Spalte A

von mikeleb » So, 09.09.2018 12:12

Hallo Peter,
die Frage wie man die Frage als gelöst stellen kann ?
... indem du deinen ersten Post editierst, z. B. [gelöst] an das Thema hängst
Um das Problem mit der Verknüpfung und Aktualisierung zu vereinfachen, würde ich gar nicht erst eine Verknüpfung einrichten, sondern per Makro die csv-Datei auslesen und die gewünschten Daten direkt an die richtige Stelle schreiben.
Wenn du verrätst, wie die csv aufgebaut ist und welche Daten daraus du wohin haben willst, kann es weiter gehen.

Nach oben