Seite 1 von 1
[gelöst] Dateien link in Base, "https" - Sonderzeichen
Verfasst: So 18. Mär 2018, 14:05
von malt14
Guten Tag,
Mit diesem Makro kann ich Webseiten oder LO Dateien, z.B. odt, aufrufen, wenn ich den Pfad in das Feld eingebe. Dank an RobertG für den Hinweis und die Hilfe dazu.
Code: Alles auswählen
REM ***** BASIC *****
SUB Website_Aufruf(oEvent AS OBJECT)
REM Aufruf einer Website oder des Mailprogramms mit einer vorgegebenen Mailadresse
DIM oFeld AS OBJECT
DIM oShell AS OBJECT
DIM stFeld AS STRING
oFeld = oEvent.Source
REM Den Text aus der Dateiauswahl auslesen
stFeld = oFeld.Text
IF stFeld = "" THEN
EXIT SUB
END IF
IF InStr(stFeld,"@") THEN
stFeld = "mailto:"+stFeld
ELSEIF InStr(stFeld,"http://") THEN
stFeld = convertToUrl(stFeld) 'convertToUrl erkennt, dass mit http:// bereits eine Verbindung vorgegeben ist. file:/// wird nicht gesetzt
ELSE
stFeld = "file:///"+stFeld
stFeld = convertToUrl(stFeld) 'convertToUrl erkennt, dass mit http:// bereits eine Verbindung vorgegeben ist. file:/// wird nicht gesetzt
END IF
REM Start des Files mit der entsprechenden URL-Verbindung
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(stFeld,,0)
END SUB
Enthält der Pfad oder Dateiname Sonderzeichen (gibt es z.B. bei deutschen oder französischen Dateinamen) oder enthält die URL "https" anstelle von "http" funktioniert der Aufruf nicht. Gibt es dafür eine Lösung? Manuell die Namen der Dateien und Pfade zu ändern, ist bei einer größeren Zahl aufwendig.
Grüße
Malt
LibreOffice
Version: 4.4.7.2
Gebietsschema: de_DE
Microsoft Windows 10
Re: Dateien link in Base
Verfasst: So 18. Mär 2018, 16:44
von RobertG
Hallo Malt,
ich habe das jetzt nicht getestet, würde aber folgendermaßen vorgehen:
ersetzen durch
Code: Alles auswählen
ELSEIF InStr(stFeld,"http://") OR InStr(stFeld,"https://") THEN
und dann, wenn der Kontakt zu https weiter nicht funktioniert, vor oShell eine Zeile Einfügen mit msgbox stFeld, die Dir dann ausgibt, was denn da in der Verbindung jetzt steht.
Für die Sonderzeichen würde ich das ELSE leer lassen. Also:
Da fehlt mir jede Erfahrung, da ich grundsätzlich keine Sonderzeichen, auch keine Leerzeichen, bei Dateinamen und Pfaden verwende.
Gruß
Robert
Re: Dateien link in Base
Verfasst: Mo 19. Mär 2018, 10:04
von malt14
Hallo Robert,
vielen Dank für die Hilfe. Ich änderte das Makro entsprechend Deinen Hinweisen:
Code: Alles auswählen
REM ***** BASIC *****
SUB Website_Aufruf(oEvent AS OBJECT)
REM Aufruf einer Website oder des Mailprogramms mit einer vorgegebenen Mailadresse
DIM oFeld AS OBJECT
DIM oShell AS OBJECT
DIM stFeld AS STRING
oFeld = oEvent.Source
REM Den Text aus der Dateiauswahl auslesen
stFeld = oFeld.Text
IF stFeld = "" THEN
EXIT SUB
END IF
IF InStr(stFeld,"@") THEN
stFeld = "mailto:"+stFeld
ELSEIF InStr(stFeld,"http://") OR InStr(stFeld,"https://") THEN
stFeld = convertToUrl(stFeld) 'convertToUrl erkennt, dass mit http:// bereits eine Verbindung vorgegeben ist. file:/// wird nicht gesetzt
ELSE
END IF
REM Start des Files mit der entsprechenden URL-Verbindung
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(stFeld,,0)
END SUB
Internetseiten mit "https" und "http" werden aufgerufen.
Dateinamen mit Sonderzeichen werden aufgerufen.
Allerdings funktionierte es bei einer Datei mit " ’ " in Namen nicht, bei einer anderen wohl. Das scheint mit der Verarbeitung beim Speichern der Dateien zusammenzuhängen. Obwohl bei beiden " ’ " angezeigt wird, wird bei der aufgerufenen Datei wohl mit " ' " gearbeitet.
Nochmals Dank für die Verbesserung des Makros.
Grüße
Malt
LibreOffice
Version: 4.4.7.2
Gebietsschema: de_DE
Microsoft Windows 10
Re: [gelöst] Dateien link in Base, "https" - Sonderzeichen
Verfasst: Mo 19. Mär 2018, 16:19
von RobertG
Hallo Malt,
vielleicht hilft eine Funktion wie diese beim Überbringen der Sonderzeichen:
Code: Alles auswählen
FUNCTION String_to_SQL(st AS STRING)
IF InStr(st,"'") THEN
st = Join(Split(st,"'"),"''")
END IF
String_to_SQL = st
END FUNCTION
Gruß
Robert
Re: [gelöst] Dateien link in Base, "https" - Sonderzeichen
Verfasst: Mo 19. Mär 2018, 19:01
von malt14
Hallo Robert,
Dank für den Hinweis. Mit der Anwendung von Funktionen in Base will ich mich künftig befassen.
Grüße
Malt
Re: [gelöst] Dateien link in Base, "https" - Sonderzeichen
Verfasst: Do 24. Okt 2024, 06:17
von malt14
Geändertes Makro
Guten Tag
RobertG hatte freundlicherweise ein Makro zur Verfügung gestellt, welches abweichend zu dem im Base Handbuch, "Aufruf von Anwendungen zum Öffnen von Dateien", auch mit Sonderzeichen funktioniert.
Code: Alles auswählen
SUB Website_Aufruf(oEvent AS OBJECT)
DIM oFeld AS OBJECT
DIM oShell AS OBJECT
DIM stFeld AS STRING
oFeld = oEvent.Source
REM Den Text aus der Dateiauswahl auslesen
stFeld = oFeld.Text
IF stFeld = "" THEN
EXIT SUB
END IF
IF InStr(stFeld,"@") THEN
stFeld = "mailto:"+stFeld
ELSEIF InStr(stFeld,"http://") OR InStr(stFeld,"https://") THEN
stFeld = convertToUrl(stFeld) 'convertToUrl erkennt, dass mit http:// bereits eine Verbindung vorgegeben ist. file:/// wird nicht gesetzt
ELSE
END IF
REM Start des Files mit der entsprechenden URL-Verbindung
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(stFeld,,0)
END SUB
Dies funktionierte noch, bewirkte jetzt bei jeder Benutzung die Meldung:
"
oShell.execute(stFeld,,0)
"
"
BASIC-Laufzeitfehler.
Argument ist nicht optional.
"
Mit diesem Code arbeitet das Makro wieder problemlos:
Code: Alles auswählen
SUB Website_Aufruf(oEvent AS OBJECT)
DIM oFeld AS OBJECT
DIM oShell AS OBJECT
DIM stFeld AS STRING
oFeld = oEvent.Source
REM Den Text aus der Dateiauswahl auslesen
stFeld = oFeld.Text
IF stFeld = "" THEN
EXIT SUB
END IF
IF InStr(stFeld,"@") THEN
stFeld = "mailto:"+stFeld
ELSEIF InStr(stFeld,"http://") OR InStr(stFeld,"https://") THEN
stFeld = convertToUrl(stFeld)
'convertToUrl erkennt, dass mit http:// bereits eine Verbindung vorgegeben ist. file:/// wird nicht gesetzt
ELSE
END IF
REM Start des Files mit der entsprechenden URL-Verbindung
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(stFeld, "", 0) ' Added empty string as second argument
END SUB
Grüße
Malt
LibreOffice Base, Version: 24.8.2.1 (X86_64), eingebettete Firebird Datenbank, OS: Windows 11 X86_64 (10.0 build 22631)
Re: [gelöst] Dateien link in Base, "https" - Sonderzeichen
Verfasst: Do 24. Okt 2024, 08:08
von RobertG
Da ist etwas von der Basic-Seite her bei der Version LO 24.8.2.1 geändert worden. Der 2. Parameter war eigentlich ein notwendiger Parameter. Wenn da nichts steht kommt eine Fehlermeldung.
Einfach den Plats zwischen den 2 Kommas mit zwei doppelten Anführungszeichen oben versehen. Ist dann ein (leerer) Text.