Hallo liebe Helferinnen und Helfer!
ich habe einen Datenbank, bei der für jeden Benutzer ein Verzeichnis auf der Festplatte eingerichtet wird. In dieses werden verschiedene pdf-Dateien gespeichert.
Nun möchte ich über ein Webbrowsersteuerelemt eine der Dateien auswählen können und auch anzeigen.
Hiefür habe ich den folgenden Code erstellt. Leider findet er den Pfad nicht, bzw. kann diesen nicht korrekt zusammenbauen. Die MsgBox ist nur zur Kontrolle! Sollte später dann dafür verwendet werden, den Hinweis zu geben, dass keine pdf-Datei vorhanden ist.
Private Sub Webbrowser262_Click()
Dim strPath As String, strFile As String, strFoundFile As String
strPath = "C:\Users\SSA\Bestand\"
strFile = Me.SuS_Name & "*" & "*.pdf"
strFoundFile = Dir(strPath & strFile)
If strFoundFile <> "" Then
Application.FollowHyperlink strFoundFile
'Application.FollowHyperlink strPath & strFoundFile
Else
MsgBox "Finde keinen Pfad!"
End If
End Sub
Leider kann ich nicht herausfinden, warum der Code nicht funktioniert. Im Moment kommt immer die MsgBox!
Bin dankbar, wenn mir jemand den Fehler aufzeigen kann.
Günther
Hallo,
Debuggen hilft vermutlich weiter... (Haltepunkt setzen, Code im >Einzelschritt durchlaufen und dabei akt... die Variablen prüfen)
Private Sub Webbrowser262_Click()
Dim strPath As String, strFile As String
strPath = "C:\Users\SSA\Bestand\"
strFile = StrPath & Me.SuS_Name & ".pdf"
If Dir(strFile) <> "" Then
Application.FollowHyperlink strFile
Else
MsgBox "Finde keine Datei!"
End If
End Sub
Lieber DF6GL!
Danke für die rasche Antwort! Leider bleibt das Problem vorhanden.
Ich bekomme keine Fehlermeldung! Der Code stimmt in beiden Fällen. Leider ist mir unklar, warum der Pfad nicht korrekt gebildet werden kann.
Eventuell bin ich aber auch komplett auf dem Holzweg :-\
Zur Situation:
Ich hätte gerne nach dem Klick auf das Feld, dass ich wie im Dateimanager auswählen kann, welche pdf-Datei innerhalb des Ordners für die im Formular ausgewählte Person angezeigt werden soll.
Das kann es auch mehrere pdf-Dateien geben!
Nochmals Danke für jede Hilfe und ebenfalls Grüße vom direkten Umfeld des Bodensees :)
Günther
Hallo,
naja, das wäre ja eine ganz andere Aufgabenstellung.....
Der Code prüft lediglich, ob es im Verzeichnis "C:\Users\SSA\Bestand\" eine PDF-Datei gibt, deren Name im Textfeld Me.SuS_Name angezeigt wird. Falls vorhanden, wird die Datei angezeigt.. Evtl. ist jedoch noch das Protokoll erforderlich:
Application.FollowHyperlink "file://" & strFile
Such mal hier nach "Filedialog", damit könntest Du dann ein Datei-Auswahl-Dialogfenster öffnen und die gewünschte Datei auswählen...
Hi,
du kannst die FollowHyperlink-Methode nur in Verbindung mit einem konkreten Dateinamen mit vollständigem Zugriffspfad einsetzen.
Du aber scheinst Dateien eines bestimmten Dateityps in einem bestimmten Verzeichnis suchen zu wollen.
Hallo
Ich bin bei meiner Suche nach einem Weg eine URL aufzurufen, die zum Teil aus der Eingabe in ein Textfeld besteht, auf diesen Beitrag gestossen.
Die URL ist immer gleich aufgebaut bis auf eben den Teil aus dem Textfeld. Ed geht dabei um Busfahrpläne, ins Textfeld kommt die gesuchte Linie. Hier mal mein Code:
Private Sub cmdBusGo_Click()
Dim strPath As String, strFile As String, strFoundFile As String
strPath = "http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/"
strFile = Me.txtBus & ".pdf?v97"
strFoundFile = strPath & strFile
Application.FollowHyperlink strFoundFile
End Sub
Wenn die eingegebene Linie existiert klappt diese Methode aus tadellos. Existiert sie allerdings nicht öffnet ein Klick an Stelle der auf der Homepage dafür vorgesehen Seite eine Fehlermeldung mit Vorschlag zum Debuggen.
Könnt ihr mir sagen woran das liegt? Und wie ich das verhindern kann, denn für den User ist diese Fehlermeldung wohl eher unnütz.
Hallo,
Zitatfür den User ist diese Fehlermeldung wohl eher unnütz
Wie wahr - aber die Fehlermeldung enthält auch eine Fehlernummer - oder?
Die könnte man für eine Fehlerbehandlungsroutine heranziehen.
Oder du versuchst das mal:
Private Sub cmdBusGo_Click()
Dim strPath As String, strFile As String, strFoundFile As String
strPath = "http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/"
strFile = Me.txtBus & ".pdf?v97"
strFoundFile = strPath & strFile
On Error GoTo ErrHandler
Application.FollowHyperlink strFoundFile
Exit Sub
ErrHandler:
MsgBox "Die eingegebene Linie existiert nicht!"
End Sub
ZitatKönnt ihr mir sagen woran das liegt?
Liegt daran, dass das File welches in strFile definiert ist in den Verzeichnissen am Webserver nicht existiert
Vielen Dank erstmal
Zitat von: database am Februar 19, 2016, 19:54:35
aber die Fehlermeldung enthält auch eine Fehlernummer
Ja: Run-time Error '8' Cannot download the information you requested
Mit deinem Code erscheint zwar jetzt der Dialog dass die Linie nicht existiert, aber nicht nur bei nicht existierenden Linie sondern bei allen
Hi,
hast du das Exit Sub geschrieben?
ja hab ich, es scheint als würde er jetzt einfach zum ErrHandler übergehen ohne dem Link überhaupt zu folgen
Das kann ja nicht sein ...
Private Sub cmdBusGo_Click()
Dim strPath As String, strFile As String, strFoundFile As String
strPath = "http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/"
strFile = Me.txtBus & ".pdf?v97"
strFoundFile = strPath & strFile
On Error GoTo ErrHandler
Application.FollowHyperlink strFoundFile
ProcExit:
Exit Sub
ErrHandler:
MsgBox "Die eingegebene Linie existiert nicht!"
Resume ProcExit
End Sub
Bau noch die beiden neuen Zeilen ein und spring dann mal mit F8 durch den Code - Haltepunkt bei 'Private Sub' setzen!
Zitat von: database am Februar 19, 2016, 20:23:31
Bau noch die beiden neuen Zeilen ein und spring dann mal mit F8 durch den Code - Haltepunkt bei 'Private Sub' setzen!
Beide Zeilen sind eingebaut, aber mit F8 tut sich bei mir überhaupt nichts. Und auch der Dialog taucht noch bei allen Eingaben auf
Hast du den Haltepunkt in der Zeile 'Private Sub cmdBusGo_Click()' gesetzt,
bleibt das Programm nach dem Klicken des Buttons dort stehen.
Mit F8 springst du dann bei jedem Drücken der Taste eine Zeile weiter.
So kannst du feststellen ob das 'Exit Sub' angesprungen wird oder nicht, auch ist zu sehen ob FollowHyperlink ausgeführt wird.
Und schreib bei der MsgBox noch folgendes dazu ...
MsgBox "Die eingegebene Linie existiert nicht! - Fehlernummer: " & Err.Number
Mal sehen was da ausgegeben wird, wenn bei jeder Eingabe die Meldung kommt
Ach ja und 'On Error GoTo ErrHandler' verschiebst du gleich unter die Variablendeklaration, damit das Ding ganz am Anfang der Prozedur bekannt ist - so sollte dein Code dann aussehen:
Private Sub cmdBusGo_Click()
Dim strPath As String, strFile As String, strFoundFile As String
On Error GoTo ErrHandler
strPath = "http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/"
strFile = Me.txtBus & ".pdf?v97"
strFoundFile = strPath & strFile
Application.FollowHyperlink strFoundFile
ProcExit:
Exit Sub
ErrHandler:
MsgBox "Die eingegebene Linie existiert nicht! - Fehlernummer: " & Err.Number
Resume ProcExit
End Sub
Also FollowHyperlink wird nicht ausgeführt, er übergeht es einfach und zeigt mir den Dialog mit der Fehlernummer 8
Damit das Formular jetzt trotzdem schon benutzbar ist habe ich alle neuen Codeteile wiedern entfernt, leider wird FollowHyperlink jetzt nicht mal mehr bei existierenden Linien ausgeführt...
Hallo,
und was passiert, wenn du "rgtr/" weglässt? So wie ich das sehe, gehört dieser Eintrag gar nicht zum Link.
klappt:
http://www.mobiliteit.lu/sites/default/files/horaires/l130.pdf?v97 (http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/l130.pdf?v97)
klappt nicht:
http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/l130.pdf?v97 (http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/l130.pdf?v97)
BTW:
Was hat es mit dem Anhang "?v97" auf sich? In Wirklichkeit sind das doch immer verschiedene Nummern. Und ohne diesen Zusatz funktioniert es auch.
Zitat von: MaggieMay am Februar 20, 2016, 19:21:50
klappt:
http://www.mobiliteit.lu/sites/default/files/horaires/l130.pdf?v97 (http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/l130.pdf?v97)
klappt nicht:
http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/l130.pdf?v97 (http://www.mobiliteit.lu/sites/default/files/horaires/rgtr/l130.pdf?v97)
Ok ich glaub ich spinne, als ich das ganze am Donnerstag versucht habe hat es mit rgtr/ geklappt
Zitat von: MaggieMay am Februar 20, 2016, 19:21:50
BTW:
Was hat es mit dem Anhang "?v97" auf sich? In Wirklichkeit sind das doch immer verschiedene Nummern. Und ohne diesen Zusatz funktioniert es auch.
Ja das sind verschiedene Versionen davon. Aber ob ich die Funktion jetzt mit rgtr/ oder ohne aufrufe, FollowHyperlink wird nicht ausgeführt, egal mit welcher Linie
Was die Sache allerdings jetzt völlig merkwürdig macht, ich habe gerade mit einem der User gesprochen, bei ihm funktioniert die Funktion, zwar die ohne den Dialog aber sie funktioniert wenigstens...
Hello,
könnte sein, dass deine Version des Frontends abgeschossen ist.
Hol dir eines von einem User und versuche dann den Dialog einzubauen.
Du KÖNNTEST auch versuchen eine neue leere DB zu erstellen und alle Objekte des nicht funktionierenden Frontends in diese zu importieren.
Vorgänge eine nicht funktionierende Datei zu retten oder zu reparieren sind in diesem Forum schon X-mal behandelt worden.
Hallo Senate1987,
sehe ich das richtig, dass dein Problem mit dem eigentlichen Thema "Webbrowser-Steuerelement" nichts zu tun hat?
Ich habe beide Versionen getestet, die von dir zuerst eingestellte und die letzte von
database (welche ja im Prinzip nichts anderes macht) und beides läuft auf denselben Fehler:
ZitatEin unerwarteter Fehler ist aufgetreten
Allerdings kam vorher die folgende (IE) Warnung:
Zitat---------------------------
Microsoft Office
---------------------------
Öffne http://www.mobiliteit.lu/sites/default/files/horaires/l130.pdf?v97
Einige Dateien können Viren enthalten oder Ihren Computer in anderer Weise beschädigen.
Es ist wichtig sicherzustellen, dass diese Datei aus einer vertrauenswürdigen Quelle stammt.
Möchten Sie diese Datei öffnen?
---------------------------
OK Abbrechen
---------------------------
Wie kann man die denn wohl abschalten?
Mein Problem hatte eigentlich nur mit dem Runtime Erroe bei nicht existierenden Linien zu tun.
Jetzt klappt aber alles so wie es soll, ich habe im Code nur die Zeilenumbrüche entfernen müssen.
Vielen Dank für eure Hilfe, ohne die bin ich wohl noch komplett aufgeschmissen ;)
Hallo,
Zitat von: Senate1987 am Februar 21, 2016, 13:41:50
ich habe im Code nur die Zeilenumbrüche entfernen müssen.
Zeilenumbrüche im Code? - Davon war hier nichts zu sehen!