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

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

peterauscalw
*
Beiträge: 17
Registriert: Sa, 01.09.2018 21:32

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

Beitrag von peterauscalw »

Hallo mikeleb,
sende Dir jetzt mal die erspi-dblog.csv und die dblog-testprot.ods im Anhang
Gruß Peter
Dateianhänge
erspi-dblog.csv.zip
(233 Bytes) 117-mal heruntergeladen
dblog-testprot.ods.zip
(120.96 KiB) 125-mal heruntergeladen
peterauscalw
*
Beiträge: 17
Registriert: Sa, 01.09.2018 21:32

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

Beitrag von peterauscalw »

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
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

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

Beitrag von mikeleb »

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) 138-mal heruntergeladen
Gruß,
mikeleb
peterauscalw
*
Beiträge: 17
Registriert: Sa, 01.09.2018 21:32

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

Beitrag von peterauscalw »

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
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

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

Beitrag von mikeleb »

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
peterauscalw
*
Beiträge: 17
Registriert: Sa, 01.09.2018 21:32

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

Beitrag von peterauscalw »

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 ?
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

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

Beitrag von mikeleb »

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) 147-mal heruntergeladen
Gruß,
mikeleb
peterauscalw
*
Beiträge: 17
Registriert: Sa, 01.09.2018 21:32

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

Beitrag von peterauscalw »

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
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

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

Beitrag von mikeleb »

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.
Gruß,
mikeleb
peterauscalw
*
Beiträge: 17
Registriert: Sa, 01.09.2018 21:32

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

Beitrag von peterauscalw »

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
Antworten