Re: [de-discuss] Re: [Calc] Warenwirtschaft: Zellwerte aus neu hinzugefuegtem Dokumente beziehen
Hallo Jörg, Am 22.07.2019 um 11:32 schrieb Jörg Schmidt: Hallo Gerhard, Du bist wohl hier Opfer der nicht richtig funktionierenden Mailingliste, oder wolltest Du mir tatsächlich persönlich schreiben? Nein, der Fehler liegt bei mir, ich wollte das an Andreas direkt schicken, so wie ich zuvor schon meine Meinung, dass das besser mit einer Datenbank zu lösen wäre (wie ja auch Robert Großkopf dann schrieb), ihm privat geschickt hatte, weil ich den Calc-Experten nicht vorgreifen wollte. Ich wollte ihm nur mein Unverständnis mitteilen, damoit er gegebenenfalls bei dir nachfragt, denn die Aufgabenstellung ist mir zu unklar, daher wollte ich nicht selbst offiziell in die Diskussion eingreifen. Ich antworte mal per persönlicher Mail plus Antwort an die Liste Locker dahingesagt! nein, garnicht, denn ich hatte mir vor meiner Antwort sehr wohl zumindest einen funktionierenden Weg überlegt. Das ich nicht besonders konkret geantwortet habe (das meinst Du wohl mt "locker") hängt nur damit zusammen das die Prozesbeschreibung von Andereas umfangreich war und icvh zu faul war diese im Detail zu durchdenken, was aber notwendig wäre um ein konkretes Ereignis zu identifizieren auf das man ZWECKMÄSSIGERWEISE reagieren kann. z.B. ist bereits Dein Vorschlag nur beim Öffnen der Datei zu reagieen, dann zweckmäßig wenn feststünde das während des Geöffnetseins der Datei keine neuen Dateien in das Verzeichnis aufgenommen werden. In diesem Falle wäre das Öffnen-Ereignis also als Startereignis gfür das Makro geeignet, ob dieser Falkl vorliegt weiß ich aber nicht, das könnte/müsste Andreas sagen. Da du von Ereignis sprachst, habe ich automatisch angenommen, dass du von den offiziellen Ereignissen der IDE im engeren Sinn sprichst. Ich habe erst durch diese Mail verstanden, was gemeint ist. Ich sehe kein Ereignis, das auf Berechnung oder Aktualisieren (wieso eigentlich?) reagiert, auch keinen Listener, den man selbst definieren müsste (braucht man z. B., wenn man auf Mausklicks reagieren will, habe ich mal verwendet). Wenn Du auf "Berechnung oder Aktualisieren" reagieren willst genügt im Zweifel ("im Zweifel" weil es funktioniert, aber nicht besonders elegant ist) eine benutzerdefinierte Funktion der Du als Parameter eine der relevanten Zellen übergibt, also der Zellen in denem etwas aktualisierend berechnet wird, und die dann ihrerseits das Makro startet, also (sinngemäß): Function bla(x) Das_Arbeitsmakro() End Function Sub Das_Arbeitsmakro() '... End Sub und in irgendeiner Zelle des Tabellenblattes dann aufrufen mit der Formel: =BLA(A1) (A1 ist hier nur ein Beispiel) (Am Rande: man muss bei dieser Art der Verwendung von benutzerdefinierten Funktionen sehr genau darauf achten was direkt in der Funktion geschehen soll, denn das direkte Ändern von Zellwerten ist nicht möglich.) ob alle Projektdateien schon verwendet sind, und andernfalls die Daten ergänzen. Aber wie prüft man das? Indem man alle Dateien im Verzeichnis per Makro frisch ausliest und mit den bestehenden Angaben in der Datei überprüft. "bestehenden Angaben" hängen im Konkreten von der gewählten Implementierung ab. Ich hatte z.B. vorgeschlagen benannte Bereiche mit Namen "Bla" plus laufende Nummer zu nutzen. Ich denke, dass mehrere Tabellenblätter dann doch die bessere Lösung sind, Ich habe darüber garnicht speziell nachgedacht, weil ich rein mechanisch die indirekt aufgeworfene Frage des Makros beantwortet habe. Gruß Jörg Gruß Gerhard -- Liste abmelden mit E-Mail an: discuss+unsubscr...@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/discuss/ Datenschutzerklärung: https://www.documentfoundation.org/privacy
RE: [de-discuss] Re: [Calc] Warenwirtschaft: Zellwerte aus neu hinzugefuegtem Dokumente beziehen
Hallo Gerhard, Du bist wohl hier Opfer der nicht richtig funktionierenden Mailingliste, oder wolltest Du mir tatsächlich persönlich schreiben? Ich antworte mal per persönlicher Mail plus Antwort an die Liste > Locker dahingesagt! nein, garnicht, denn ich hatte mir vor meiner Antwort sehr wohl zumindest einen funktionierenden Weg überlegt. Das ich nicht besonders konkret geantwortet habe (das meinst Du wohl mt "locker") hängt nur damit zusammen das die Prozesbeschreibung von Andereas umfangreich war und icvh zu faul war diese im Detail zu durchdenken, was aber notwendig wäre um ein konkretes Ereignis zu identifizieren auf das man ZWECKMÄSSIGERWEISE reagieren kann. z.B. ist bereits Dein Vorschlag nur beim Öffnen der Datei zu reagieen, dann zweckmäßig wenn feststünde das während des Geöffnetseins der Datei keine neuen Dateien in das Verzeichnis aufgenommen werden. In diesem Falle wäre das Öffnen-Ereignis also als Startereignis gfür das Makro geeignet, ob dieser Falkl vorliegt weiß ich aber nicht, das könnte/müsste Andreas sagen. > Ich sehe kein Ereignis, das auf Berechnung oder > Aktualisieren (wieso eigentlich?) reagiert, auch keinen Listener, den > man selbst definieren müsste (braucht man z. B., wenn man auf > Mausklicks > reagieren will, habe ich mal verwendet). Wenn Du auf "Berechnung oder Aktualisieren" reagieren willst genügt im Zweifel ("im Zweifel" weil es funktioniert, aber nicht besonders elegant ist) eine benutzerdefinierte Funktion der Du als Parameter eine der relevanten Zellen übergibt, also der Zellen in denem etwas aktualisierend berechnet wird, und die dann ihrerseits das Makro startet, also (sinngemäß): Function bla(x) Das_Arbeitsmakro() End Function Sub Das_Arbeitsmakro() '... End Sub und in irgendeiner Zelle des Tabellenblattes dann aufrufen mit der Formel: =BLA(A1) (A1 ist hier nur ein Beispiel) (Am Rande: man muss bei dieser Art der Verwendung von benutzerdefinierten Funktionen sehr genau darauf achten was direkt in der Funktion geschehen soll, denn das direkte Ändern von Zellwerten ist nicht möglich.) > ob alle > Projektdateien > schon verwendet sind, und andernfalls die Daten ergänzen. > Aber wie prüft > man das? Indem man alle Dateien im Verzeichnis per Makro frisch ausliest und mit den bestehenden Angaben in der Datei überprüft. "bestehenden Angaben" hängen im Konkreten von der gewählten Implementierung ab. Ich hatte z.B. vorgeschlagen benannte Bereiche mit Namen "Bla" plus laufende Nummer zu nutzen. > Ich denke, dass mehrere Tabellenblätter dann doch die bessere Lösung > sind, Ich habe darüber garnicht speziell nachgedacht, weil ich rein mechanisch die indirekt aufgeworfene Frage des Makros beantwortet habe. Gruß Jörg -- Liste abmelden mit E-Mail an: discuss+unsubscr...@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/discuss/ Datenschutzerklärung: https://www.documentfoundation.org/privacy
RE: [de-discuss] Re: [Calc] Warenwirtschaft: Zellwerte aus neu hinzugefuegtem Dokumente beziehen
Hallo, > From: Andreas Borutta [mailto:boru...@gmx.de] > Sent: Sunday, July 21, 2019 12:35 PM > To: discuss@de.libreoffice.org > Subject: [de-discuss] Re: [Calc] Warenwirtschaft: Zellwerte > aus neu hinzugefuegtem Dokumente beziehen > Kann denn ein Makro ein Ereignis wie "Im Ordner /~/Documents/Projekte > wird eine neue Datei angelegt/eine vorhandene gespeichert" überwachen? Nein. Da aber eine Aktualisierung ohnehin nur dann nötig ist wenn Berechnungen, die auf der Zelle basieren deren Inhalt das Makro erstellt, neu durchgeführt oder Bestehende aktualisiert werden, reicht es ein Ereignis zu nutzen das dann stattfindet und daran das Makro zu binden. > Zur Länge: > Um wieviele Dokumente würde es gehen? Geschätzt vielleicht bis zu 20, Dann genügt es die Ausdrücke der Form "file:///Users/MeinBenutzername/Documents/Projekte/Projekt-1.ods" als Benannte Bereiche (entsrechend Tabelle-Benannte Bereiche-Festlegen im Calc-Menü), mit kurzen Namen, per Makro zu erstellen/festzulegen und diese kurzen Namen dann in der Formel zu verwenden. > Mittelfristig will er natürlich auf eine datenbankbasierte Lösung > setzen. > > Vielleicht https://www.odoo.com/de_DE/page/editions Wenn das die Option ist, dann zöge ich eine lokale Calc-Tabelle aber einer Online-Lösung vor, rein aufgrund der Datensicherheit. (Aber auf Datensicherheit Wert zu legen ist heutzutage wohl eine aussterbende Tugend, denn Bequemlichkeit ist der Mehrheit wichtiger, und da das Gehacktwerden von Online-Daten, ja meist ohne ernstliche Haftungs-Konsequenzen bleibt, ist da kaum auf Besserung zu rechnen.) Besser wäre trotzdem auch lokal eine Datenbank, aber wenn die Wahl lautet sicher oder effizient, ist mir sicher wichtiger. Gruß Jörg -- Liste abmelden mit E-Mail an: discuss+unsubscr...@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/discuss/ Datenschutzerklärung: https://www.documentfoundation.org/privacy
[de-discuss] Re: [Calc] Warenwirtschaft: Zellwerte aus neu hinzugefuegtem Dokumente beziehen
Jörg Schmidt: Hallo Jörg. >> Wäre es möglich den Ordner "file:///~/Documents/Projekte/" so zu >> "überwachen", dass jede neue Datei, z.B. "Projekt-2.ods" automatisch >> in Warenbestand.ods passend eingefügt wird? >> >> Ergebnis also: >> >> D2=C2-'file:///~/Documents/Projekte/Projekt-1.ods'#$T_Material >> .B2-C2-'file:///~/Documents/Projekte/Projekt-2.ods'#$T_Material.B2 Hier hatte sich ein Fehler eingeschlichen, es sollte natürlich heißen: D2=C2-'file:///~/Documents/Projekte/Projekt-1.ods'#$T_Material.B2-'file:///~/Documents/Projekte/Projekt-2.ods'#$T_Material.B2 >> Vermutlich ist sowas ohne größeren Programmieraufwand nicht zu machen, >> oder? > > eigentlich genügt: > > Sub Main > Dim alle() > datei = Dir("~/Documents/Projekte/*.ods", 0) > Do > i = UBOUND(alle()) > Redim Preserve alle(i+1) > alle(i+1) = datei > datei = Dir > Loop While datei <> "" > End Sub > > plus das Zusammenbauen des Formelstrings. > > Problematisch ist das eine Tabellenformel nur eine begrenzte Länge haben > kann, ich > weiß garnicht wieviel aktuell bei LO. Man müsste also überlegen wie man das > löst, > abhängig von der zu erwartenten Anzahl an Dateien. Herzlichen Dank erstmal für Dein Makro. Kann denn ein Makro ein Ereignis wie "Im Ordner /~/Documents/Projekte wird eine neue Datei angelegt/eine vorhandene gespeichert" überwachen? Zur Länge: LO ändert leider automatisch den Platzhalter "~" in den realen Pfad. Dadurch würde die Formel natürlich sehr lang. Beispiel: file:///Users/MeinBenutzername/Documents/Projekte/Projekt-1.ods Um wieviele Dokumente würde es gehen? Geschätzt vielleicht bis zu 20, sagt mein Freund. Den Pfad könnte man durch Kürzen der Ordner und Dateinamen natürlich eindampfen. file:///Users/MeinBenutzername/P/P-1.ods Aber eigentlich kann man eine solche Anzahl von aktiven Projekten auch einfach als Tabellenblätter neben dem Tabellenblatt "T_Warenbestand" anlegen. Das scheint mir vernünftiger. Mittelfristig will er natürlich auf eine datenbankbasierte Lösung setzen. Vielleicht https://www.odoo.com/de_DE/page/editions (OpenSource, webbasiert) Damit kenne ich mich nicht aus. Andreas -- http://fahrradzukunft.de -- Liste abmelden mit E-Mail an: discuss+unsubscr...@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/discuss/ Datenschutzerklärung: https://www.documentfoundation.org/privacy
[de-discuss] Re: [Calc] Warenwirtschaft: Zellwerte aus neu hinzugefuegtem Dokumente beziehen
Robert Großkopf: >> Ich wollte durch meine Nachfrage sicherstellen, dass ich nicht >> vielleicht eine elegante einfache Lösung übersehe. > > CALC ist ein Tabellenkalkulationsprogramm, keine Datenbank. Das, was da > gemacht werden soll, riecht an allen Ecken und Enden nach Datenbank - > aber eine andere Antwort hast Du wahrscheinlich von mir dazu sowieso > nicht erwartet. Und das hilft Dir nicht weiter, weil es eben doch wohl > die komplizierte Calc-Lösung sein soll. Du hast natürlich ohne Frage Recht damit, dass es eigentlich eine Aufgabe für eine Datenbank ist. Das ist mir auch klar. Aber der Freund ist mit Datenbanken völlig unerfahren, kann jedoch mit Tabellen gut umgehen. Mich interessierte schlicht, was mit Calc in Bezug auf dokumentenübergreifende Formeln so geht. Denn nicht selten kommt es ja vor, dass Calc weit mehr kann als man zunächst vermutet hat. Andreas -- http://fahrradzukunft.de -- Liste abmelden mit E-Mail an: discuss+unsubscr...@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/discuss/ Datenschutzerklärung: https://www.documentfoundation.org/privacy