Hi,
ich möchte von Access aus eine Website öffnen. Das klappt bei "normalen Seiten ala http://www.access-o-mania.de" auch problemlos.
Ich möchte allerdings mit der URL Parameter übergeben. Diese Parameter enthalten u.a. Leerzeichen.
Beim Aufruf hängt sich Access erstmal eine weile fest und spuckt dann Fehler "490 - Datei konnte nicht geöffnet werden" aus.
Die URL mit debug.print ausgegeben und in den Browser reinkopiert klappt super, ohne Probleme.
Mit Replace die Leerzeichen durch %20 ersetzt... will FollowHyperlink auch nicht... gleicher Fehler...
Wie kann ich denn Access dazu bringen, diesen Link an den Browser zu übergeben und die Seite zu öffnen?
Zitat von: datekk am September 26, 2019, 13:34:35
Mit Replace die Leerzeichen durch %20 ersetzt... will FollowHyperlink auch nicht... gleicher Fehler...
Wie kann ich denn Access dazu bringen, diesen Link an den Browser zu übergeben und die Seite zu öffnen?
Gibt es evtl. weitere Sonderzeichen in der URL? - Stichwort: URLEncode
Kannst du einen konkreten Link als Beispiel posten?
@datekk
Versuche mal die Quotes zu maskieren
""" oder
""""
Bin mir nicht sicher; - das Direktfenster gibt in beiden Fällen ein einfaches "
zurück.
gruss ekkehard
Hallo,
oft hilft auch mit Chr(34) zu maskieren.
Es sind gar keine Anführungszeichen im Code enthalten die maskiert werden müssten.
Hier der Link. Normale Zeichen durch '*' geschwärzt:
https://******.com/****-*****/*******?name=****%20******%20&email=*******@******.com&a1=**********%20******%20*****%20*******%20%20**********%20****%20*******%20******%20********&a2=**%20(*****)%20******
Der Link enthält keine Umlaute. Alle Sonderzeichen sind noch zu sehen. Leerzeichen durch %20 ersetzt.
Gäbe es noch eine Alternative zu "FollowHyperlink"?
Hallo,
ZitatDie URL mit debug.print ausgegeben und in den Browser reinkopiert klappt super, ohne Probleme.
Kopiere danach die funktionierende URL aus dem Browser-Adressfeld und lege die als Literalstring im Code ab.
Ersetze manuell die darin enthaltenen Parameterwerte durch je einen individuellen Platzhalter (z. B "[Ort]") .
Ersetze sodann mit Replace die einzelnen Platzhalter durch die akt. Werte und übergebe das Ergebnis an Followhyperlink.
strOrt="Musterstadt"
strUrl = Replace (strUrl, "[Ort]",strOrt)
FollowHyperlink strUrl
Alternative für Followhyperlink: Shellexecute
Hallo,
wenn ich nicht irre, ist die Länge des Pfades mit Dateinamen auf 64 Zeichen beschränkt.
Das gilt glaube ich auch für Shellexecute, müsste man mal probieren.
Hi,
Zitatdie Länge des Pfades mit Dateinamen
???
Hallo,
meinte natürlich nicht Pfad, sondern die komplette URL.
Es ist das Alter. ;D
Tja, solche Situationen kenne ich auch... :D
Zitat von: DF6GL am Oktober 15, 2019, 10:52:42Alternative für Followhyperlink: Shellexecute
Shellexecute findest du z.B. hier:
VBA Tipp: Anwendung mit ShellExecute starten (http://dbwiki.net/wiki/VBA_Tipp:_Anwendung_mit_ShellExecute_starten#Standardbrowser_.C3.B6ffnen)
Gruß
Josef
@Klaus,
Zitat von: MzKlMu am Oktober 15, 2019, 10:56:33
wenn ich nicht irre, ist die Länge des Pfades mit Dateinamen auf 64 Zeichen beschränkt.
ich habe mal testweise einen Pfad zu einer Webseite mit 263 Zeichen mit der FollowHyperlink-Methode geöffnet.
Hat funktioniert.
Gruß
Josef
Zitat von: datekk am Oktober 15, 2019, 10:41:53
Der Link enthält keine Umlaute. Alle Sonderzeichen sind noch zu sehen. Leerzeichen durch %20 ersetzt.
Die Klammern und das @-Symbol müssen meines Erachtens codiert werden.
Das Problem lag bei Umlauten. Ich habe es wie folgt gelöst:
Sub OeffneLink(link as String)
Dim u1() as String
Dim u2() as String
Dim i as Integer
u1 = Split("ü,ä,ö,ß, ", ",")
u2 = Split("%C3%BC,%C3%A4,%C3%B6,%C3%9F,%20", ",")
For i = LBound(u1) To UBound(u2)
link = Replace(link, u1(i), u2(i))
Next
FollowHyperlink link
End Sub
Zitat von: datekk am Oktober 15, 2019, 10:41:53
Der Link enthält keine Umlaute.
Zitat von: datekk am November 26, 2019, 09:34:58
Das Problem lag bei Umlauten. Ich habe es wie folgt gelöst:
Nun ja, gut dass du das Problem lösen konntest.
Es war in der Tat so, dass der ursprüngliche Link keine Umlaute enthielt. Heute konnte ich es in einem Fall auf die Umlaute direkt zurückführen. Sobald wieder ein Zeichen auftaucht, welches Probleme bereitet, können wir dies ja in die Sub mit aufnehmen.
LG