💚 BITTE helfen Sie uns NOCH HEUTE mit einer SPENDE 💚
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
relative Pfadangaben
-
- Beiträge: 7
- Registriert: Fr 16. Jun 2017, 08:19
relative Pfadangaben
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
-
- Beiträge: 763
- Registriert: Fr 28. Mär 2014, 10:41
Re: relative Pfadangaben
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
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
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.
-
- Beiträge: 7
- Registriert: Fr 16. Jun 2017, 08:19
Re: relative Pfadangaben
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
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
-
- Beiträge: 763
- Registriert: Fr 28. Mär 2014, 10:41
Re: relative Pfadangaben
Hallo Frank,
es war nur eine Vermutung. Vielleicht klappt, das converttourl erst in den Shellaufruf zu nehmen?
Hast du mal mit
vor dem Shellaufruf anzeigen lassen, was in stDir genau drin steht? Vielleicht ist ein Slash falschrum oder man sieht eine andere Ursache.
Gruß
Freischreiber
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
Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.
-
- Beiträge: 7
- Registriert: Fr 16. Jun 2017, 08:19
Re: relative Pfadangaben
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
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
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️