Seite 1 von 1

relative Pfadangaben

Verfasst: Di 20. Jun 2017, 10:37
von FrankKaden
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

Re: relative Pfadangaben

Verfasst: Di 20. Jun 2017, 11:58
von Freischreiber
Hallo Frank,

eventuell mußt du beim Zusammenbauen des Pfads mit converttourl arbeiten. Ich hatte einmal ein entfernt ähnliches Problem:
https://www.libreoffice-forum.de/viewto ... =10#p43459

Gruß
Freischreiber

Re: relative Pfadangaben

Verfasst: Di 20. Jun 2017, 13:06
von FrankKaden
Hallo Freischreiber,

danke für die schnelle Antwort.

Hast Du das so gemeint?:

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.
stDir = ConvertToURL(stDir)
shell(stDir & "\Programme\pschaltjahr.exe",1,"")
End Sub

So funktioniert es leider nicht, dieselbe Fehlermeldung.
Ich denke aber, ich habe Deine Antwort missverstanden.
Vielleicht gibt es noch weitere Tipps....

Viele Grüße Frank

Re: relative Pfadangaben

Verfasst: Di 20. Jun 2017, 14:00
von Freischreiber
Hallo Frank,

es war nur eine Vermutung. Vielleicht klappt, das converttourl erst in den Shellaufruf zu nehmen?

Hast du mal mit

Code: Alles auswählen

msgbox stDir
vor dem Shellaufruf anzeigen lassen, was in stDir genau drin steht? Vielleicht ist ein Slash falschrum oder man sieht eine andere Ursache.

Gruß
Freischreiber

Re: relative Pfadangaben

Verfasst: Di 20. Jun 2017, 14:15
von FrankKaden
Hallo Freischreiber,

tatsächlich, es lag an den Rückstrichen in meiner relativen Pfadangabe.

Jetzt funktioniert der Aufruf wie gewünscht.

Viele Dank und viele Grüße
Frank