relative Pfadangaben
Verfasst: Di 20. Jun 2017, 10:37
Hallo,
ich möchte über eine Schaltfläche und dem dahinterliegenden Makro auf einem LOBase-Formular
ein kleines Windows-Programm starten (es handelt sich nur um eine EXE-Datei).
Dieses Programm liegt in einem Unterordner des Ordners, in dem sich meine
LO-Datenbank befindet. Da diese Datenbank auch auf anderen PC's laufen soll,
muss der Pfad zur EXE-Datei relativ angegeben werden (Unterordner sollen beim
Kopieren der Datenbank mit kopiert werden).
Ich konnte ein ähnliches Problem mit Hilfe verschiedener Foren bereits lösen:
Öffnen eines PDF-Dokumentes über eine Schaltfläche und einem Makro.
Das sieht dann so aus:
sub IP_Tabelle_oeffnen
oDB = ThisComponent.Parent ' Der Zugriff auf die URL ist nicht vom Formular aus direkt möglich. Es muss auf den darüberliegenden Frame der Datenbank Bezug genommen werden.
stDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title)) ' Der Titel der Datenbank wird von der URL abgetrennt.
oSer = createUNOService("com.sun.star.system.SystemShellExecute")
oSer.execute(stDir & "\Texte\ip.pdf",,0)
end Sub
Die Variable stDir ermittelt den aktuellen Pfad zum Unterordner Texte des Ordners, in dem sich die Datenbank
befindet. (Soweit, wie ich das verstanden habe. Bin hier leider kein Experte auf dem Gebiet)
Analog dachte ich mir, funktioniert das auch, wenn ich ein Programm (wie oben beschrieben) starten will.
Mein Makro sieht dann so aus:
SUB Schaltjahr_Rechner_starten
oDB = ThisComponent.Parent ' Der Zugriff auf die URL ist nicht vom Formular aus direkt möglich. Es muss auf den darüberliegenden Frame der Datenbank Bezug genommen werden.
stDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title)) ' Der Titel der Datenbank wird von der URL abgetrennt.
shell(stDir & "\Programme\pschaltjahr.exe",1,"")
End Sub
Hier erhalte ich aber die Fehlermeldung: "BASIC-Laufzeitfehler.Datei nicht gefunden."
Mit einer absoluten Pfadangabe funktioniert der SHELL-Befehl aber einwandfrei.
Irgendwas verstehe ich hier falsch. Könnt Ihr mir bitte helfen?
Viele Grüße
Frank
ich möchte über eine Schaltfläche und dem dahinterliegenden Makro auf einem LOBase-Formular
ein kleines Windows-Programm starten (es handelt sich nur um eine EXE-Datei).
Dieses Programm liegt in einem Unterordner des Ordners, in dem sich meine
LO-Datenbank befindet. Da diese Datenbank auch auf anderen PC's laufen soll,
muss der Pfad zur EXE-Datei relativ angegeben werden (Unterordner sollen beim
Kopieren der Datenbank mit kopiert werden).
Ich konnte ein ähnliches Problem mit Hilfe verschiedener Foren bereits lösen:
Öffnen eines PDF-Dokumentes über eine Schaltfläche und einem Makro.
Das sieht dann so aus:
sub IP_Tabelle_oeffnen
oDB = ThisComponent.Parent ' Der Zugriff auf die URL ist nicht vom Formular aus direkt möglich. Es muss auf den darüberliegenden Frame der Datenbank Bezug genommen werden.
stDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title)) ' Der Titel der Datenbank wird von der URL abgetrennt.
oSer = createUNOService("com.sun.star.system.SystemShellExecute")
oSer.execute(stDir & "\Texte\ip.pdf",,0)
end Sub
Die Variable stDir ermittelt den aktuellen Pfad zum Unterordner Texte des Ordners, in dem sich die Datenbank
befindet. (Soweit, wie ich das verstanden habe. Bin hier leider kein Experte auf dem Gebiet)
Analog dachte ich mir, funktioniert das auch, wenn ich ein Programm (wie oben beschrieben) starten will.
Mein Makro sieht dann so aus:
SUB Schaltjahr_Rechner_starten
oDB = ThisComponent.Parent ' Der Zugriff auf die URL ist nicht vom Formular aus direkt möglich. Es muss auf den darüberliegenden Frame der Datenbank Bezug genommen werden.
stDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title)) ' Der Titel der Datenbank wird von der URL abgetrennt.
shell(stDir & "\Programme\pschaltjahr.exe",1,"")
End Sub
Hier erhalte ich aber die Fehlermeldung: "BASIC-Laufzeitfehler.Datei nicht gefunden."
Mit einer absoluten Pfadangabe funktioniert der SHELL-Befehl aber einwandfrei.
Irgendwas verstehe ich hier falsch. Könnt Ihr mir bitte helfen?
Viele Grüße
Frank