LO Kommandozeile - externer Makro-Aufruf - Parameter übergeben

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

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

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

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 ------