Re: [de-users] LO Kommandozeile - externer Makro-Aufruf - Parameter übergeben
Hallo Thomas, herzlichen Dank für Deinen Hinweis. Durch all die seitenlangen Hinweise auf super-komplizierte Vorgehensweisen bezüglich dieser Problemstellung in den Threads habe ich mich davon abhalten lassen, einfach mal die eigentlich logischste Variante zu probieren. Da hätte ich besser gleich zu erst mal hier in der Liste nachgefragt ;-)) !!! Ja, so funktioniert es wunderbar :-)) [1] Externer Makro-Aufruf (via Perl) use strict; use warnings; my $K; # Konfigurationsdatei my $L; # Libre Office my $M; # Makro $K = 'E:\ETC\Modellbahn\Bauteile\TabelleAktualisieren_Bauteile.txt'; $L = "C:/Program Files/LibreOffice 5/program/soffice.exe"; $M = "macro:///Standard.TabelleAktualisieren.TabelleAktualisieren($K)"; `"$L" --nologo "$M"`; [2] Makro Option Explicit Sub TabelleAktualisieren (FN_ConfD as String) : End Sub Bei [1] muss man nur darauf achten, dass die "ollen Windows \" kaschiert werden durch ' ... ' oder "... \\ ..." , weil sonst Perl meckert: $K = 'E:\ETC\Modellbahn\Bauteile\TabelleAktualisieren_Bauteile.txt'; oder $K = "E:\\ETC\\Modellbahn\\Bauteile\\TabelleAktualisieren_Bauteile.txt"; Ein kleiner Hinweis: Diese externe Makro-Aufruf-Strategie (nach obigem Schema) kann man natürlich auch mit anderen Programmiersprachen realisieren, Perl ist da nicht zwingend. Ich nutze unter Windows "Strawberry Perl" ( http://strawberryperl.com/ ), weil eben kostenlos, unter Windows lauffähig und als Programmiersprache schon ordentlich leistungsfähig und auch ziemlich flott ... Viele Grüße Hans-Werner :-)) -- Originalnachricht -- Von: "Thomas Krumbein" <thomas.krumb...@documentfoundation.org> An: users@de.libreoffice.org Gesendet: 03.11.2017 12:57:00 Betreff: Re: [de-users] LO Kommandozeile - externer Makro-Aufruf - Parameter übergeben Hei Hans, jo, sollte an sich gehen: der Shellaufruf soffice.exe --nologo 'macro:///Standard.TabelleAktualisieren.TabelleAktualisieren_Bauteile("Parameter1", "Parameter2")' sollte das Makro mit zwei übergebenen Stringparametern starten. Das Makro muss aber auch zwei Parameter erwarten! Wie Du das allerdings in Dein shell-Script "reinbastelst" weiss ich nicht wirklich;) Viele Grüße Thomas Am 03.11.2017 um 11:10 schrieb OoOHWHOoO: Hallo, folgende Problemstellung: Mit etwas Perl-Code starte ich ein Makro, dass mehrere Tabellen (von ods-Dateien) bearbeitet: use strict; use warnings; my $L; my $M; $L = "C:/Program Files/LibreOffice 5/program/soffice.exe"; $M = "macro:///Standard.TabelleAktualisieren.TabelleAktualisieren_Bauteile"; `"$L" --nologo "$M"`; Das Makro liest aus einer Konfigurationsdatei Konfigurationsdaten und führt seine Verarbeitungen aus. Makro: Standard.TabelleAktualisieren.TabelleAktualisieren_Bauteile Konfigurationsdatei: E:\ETC\Modellbahn\Bauteile\TabelleAktualisieren_Bauteile.txt Das funktioniert alles prima :-)) ... Der einzige "Schönheitsfehler" ist, dass Pfad/Dateiname der Konfigurationsdatei im Makro als Zeichenkette angegeben ist. Gibt es eine Möglichkeit mit LO bei einem externen Makro-Aufruf (s.o. Perl-Beispiel), dem Makro Daten zu übergeben ? Wenn ja, wie müsste ich das formulieren ? Meine Suche im WEB hat leider nur zu Beispielen geführt, die nicht funktionieren beziehungsweise im Verlauf der Threads "als nicht funktionierend" zerredet wurden ... So meine Frage: Gibt es eine Möglichkeit, für nachfolgendes Beispiel eine Parameter-Übergabe an das Makro zu realisieren ? [1] Makro-Name macro:///Standard.Modul1.ParameterTest [2] Makro-Inhalt Sub ParameterTest ??? MsgBox(Dateiname) End Sub [3] Perl-Aufruf (vereinfachte Darstellung) my $Dateiname; Dateiname = "C:\TMP\Konfigurationsdaten.txt"; soffice "macro:///Standard.Modul1.ParameterTest ??? "; Vielen Dank im Voraus für eventuelle Hinweise, Tipps oder gar ein Aufrufbeispiel, Gruß Hans-Werner -- Liste abmelden mit E-Mail an: users+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/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert -- Liste abmelden mit E-Mail an: users+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/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Re: [de-users] LO Kommandozeile - externer Makro-Aufruf - Parameter übergeben
Hei Hans, jo, sollte an sich gehen: der Shellaufruf soffice.exe --nologo 'macro:///Standard.TabelleAktualisieren.TabelleAktualisieren_Bauteile("Parameter1", "Parameter2")' sollte das Makro mit zwei übergebenen Stringparametern starten. Das Makro muss aber auch zwei Parameter erwarten! Wie Du das allerdings in Dein shell-Script "reinbastelst" weiss ich nicht wirklich;) Viele Grüße Thomas Am 03.11.2017 um 11:10 schrieb OoOHWHOoO: Hallo, folgende Problemstellung: Mit etwas Perl-Code starte ich ein Makro, dass mehrere Tabellen (von ods-Dateien) bearbeitet: use strict; use warnings; my $L; my $M; $L = "C:/Program Files/LibreOffice 5/program/soffice.exe"; $M = "macro:///Standard.TabelleAktualisieren.TabelleAktualisieren_Bauteile"; `"$L" --nologo "$M"`; Das Makro liest aus einer Konfigurationsdatei Konfigurationsdaten und führt seine Verarbeitungen aus. Makro: Standard.TabelleAktualisieren.TabelleAktualisieren_Bauteile Konfigurationsdatei: E:\ETC\Modellbahn\Bauteile\TabelleAktualisieren_Bauteile.txt Das funktioniert alles prima :-)) ... Der einzige "Schönheitsfehler" ist, dass Pfad/Dateiname der Konfigurationsdatei im Makro als Zeichenkette angegeben ist. Gibt es eine Möglichkeit mit LO bei einem externen Makro-Aufruf (s.o. Perl-Beispiel), dem Makro Daten zu übergeben ? Wenn ja, wie müsste ich das formulieren ? Meine Suche im WEB hat leider nur zu Beispielen geführt, die nicht funktionieren beziehungsweise im Verlauf der Threads "als nicht funktionierend" zerredet wurden ... So meine Frage: Gibt es eine Möglichkeit, für nachfolgendes Beispiel eine Parameter-Übergabe an das Makro zu realisieren ? [1] Makro-Name macro:///Standard.Modul1.ParameterTest [2] Makro-Inhalt Sub ParameterTest ??? MsgBox(Dateiname) End Sub [3] Perl-Aufruf (vereinfachte Darstellung) my $Dateiname; Dateiname = "C:\TMP\Konfigurationsdaten.txt"; soffice "macro:///Standard.Modul1.ParameterTest ??? "; Vielen Dank im Voraus für eventuelle Hinweise, Tipps oder gar ein Aufrufbeispiel, Gruß Hans-Werner -- Liste abmelden mit E-Mail an: users+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/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Re: [de-users] LO Kommandozeile - externer Makro-Aufruf - Parameter übergeben
Hallo Hans-Werner, wenn ich das richtig verstehe, startet dein Perl-Skript das Makro, das dann automatisch abläuft, so dass du nicht die Möglichkeit hast, über die Inputbox oder den Filepicker die Datei anzugeben. Das wäre ja einfach. Aber wie wäre es, wenn du im Makro nicht die Datei stehen hättest, die verarbeitet werden soll, sondern eine fixe Hilfsdatei, in die jeweils vom Perl-Skript aus der Dateiname der zu verarbeitenden Datei geschrieben wird. Das Makro liest den Namen aus, öffnet die eigentliche Datei usw.. Gruß Gerhard Am 03.11.2017 um 11:10 schrieb OoOHWHOoO: Hallo, folgende Problemstellung: Mit etwas Perl-Code starte ich ein Makro, dass mehrere Tabellen (von ods-Dateien) bearbeitet: use strict; use warnings; my $L; my $M; $L = "C:/Program Files/LibreOffice 5/program/soffice.exe"; $M = "macro:///Standard.TabelleAktualisieren.TabelleAktualisieren_Bauteile"; `"$L" --nologo "$M"`; Das Makro liest aus einer Konfigurationsdatei Konfigurationsdaten und führt seine Verarbeitungen aus. Makro: Standard.TabelleAktualisieren.TabelleAktualisieren_Bauteile Konfigurationsdatei: E:\ETC\Modellbahn\Bauteile\TabelleAktualisieren_Bauteile.txt Das funktioniert alles prima :-)) ... Der einzige "Schönheitsfehler" ist, dass Pfad/Dateiname der Konfigurationsdatei im Makro als Zeichenkette angegeben ist. Gibt es eine Möglichkeit mit LO bei einem externen Makro-Aufruf (s.o. Perl-Beispiel), dem Makro Daten zu übergeben ? Wenn ja, wie müsste ich das formulieren ? Meine Suche im WEB hat leider nur zu Beispielen geführt, die nicht funktionieren beziehungsweise im Verlauf der Threads "als nicht funktionierend" zerredet wurden ... So meine Frage: Gibt es eine Möglichkeit, für nachfolgendes Beispiel eine Parameter-Übergabe an das Makro zu realisieren ? [1] Makro-Name macro:///Standard.Modul1.ParameterTest [2] Makro-Inhalt Sub ParameterTest ??? MsgBox(Dateiname) End Sub [3] Perl-Aufruf (vereinfachte Darstellung) my $Dateiname; Dateiname = "C:\TMP\Konfigurationsdaten.txt"; soffice "macro:///Standard.Modul1.ParameterTest ??? "; Vielen Dank im Voraus für eventuelle Hinweise, Tipps oder gar ein Aufrufbeispiel, Gruß Hans-Werner -- Liste abmelden mit E-Mail an: users+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/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert