Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1112to1116
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler abfangen

Laufzeitfehler abfangen
Rüdiger
Hallo Ihr VBA-Internet-Freaks,
beim Versuch, die Verfügbarkeit einer Internetseite per VBA zu prüfen, bekomme ich "Zugriff verweigert".
Ich benutze das GetLinkStatus (auf einen Tipp aus dem Forum hin!)
Die Prozedur schaut folgendermaßen aus:
Public Function GetLinkStatus(ByVal strUrl As String) As Long
Dim oHttp As Object
Dim Antw As Variant
If strUrl  "" Then
If Not VBA.Left(strUrl, 7) = "http://" Then
strUrl = "http://" & strUrl
End If
Set oHttp = CreateObject("Msxml2.XMLHTTP")
On Error Resume Next
oHttp.Open "GET", strUrl, False
On Error GoTo errorhandler:
oHttp.Send
On Error GoTo errorhandler:
GetLinkStatus = oHttp.Status
Set oHttp = Nothing
On Error GoTo 0
End If
errorhandler:
If Err.Number = 70 Then
Antw = MsgBox("Zugriff auf die Seite " & strUrl & " verweigert", vbOKCancel, " _
Laufzeitfehler")
Err.Clear
Else
Antw = MsgBox("Fehler " & Err.Number, vbOKOnly, "Laufzeitfehler")
End If
End Function
Den Fehler "Zugriff verweigert" bekomme ich in oHttp.Send,.
Ich dachte eigentlich, mit on error goto müsste ich den Fehler abfangen können?!
Im Sub darüber frage ich dann diesen Linkstatus ab und verzweige entsprechend:
.....
lLinkStatus = GetLinkStatus(strInternetAdr)
If lLinkStatus = 200 Then
Else
End If
Vielen Dank für eure Unterstützung
Grüße
Rüdiger

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Laufzeitfehler abfangen
30.10.2009 14:28:22
dan
Hallo Ruediger,
wie sieht strUrl genau aus?
Gruss dan, cz
AW: Laufzeitfehler abfangen
30.10.2009 14:43:15
Rüdiger
hallo dan,
da übergebe ich die vollständige Internetadresse als String.
Inzwischen habe ich noch etwas weiter getestet mit F8 Zeilenweise:
habe genau in diese Zeile goto errorhandler: rein geschrieben.
War kein 70 in err.number ("ist ja Zugriff verweigert", soweit ich weiß), Msgbox im übergeordneten Sub hat Linkstatus 0 ausgegeben. Werde gleich noch mal googeln nach den Errorcodes oder weißt du da eine Seite. Aber abgesehen davon müßte ja in jedem Fall automatisch in den errorhandler verzweigt werden, oder, was meinst du?
Gruß
Rüdiger
Anzeige
AW: Laufzeitfehler abfangen
30.10.2009 14:55:42
dan
Hallo,
ja ich wess, ich dachte dass Du einen Beispiel schickst, damit ich das testen kann :-).
Z.B. 'www.server1.de' etc.
Status codes: http://www.w3.org/Protocols/HTTP/HTRESP.html
So habe ich getestet:
Option Explicit
Public Sub test()
GetLinkStatus "http://xlarchiv.herber.de"
' GetLinkStatus "http://seznam.cz"
End Sub
Public Function GetLinkStatus(ByVal strUrl As String) As Long
Dim oHttp As XMLHTTP60 ' Object
Dim Antw As Variant
If strUrl  "" Then
If Not VBA.Left(strUrl, 7) = "http://" Then
strUrl = "http://" & strUrl
End If
Set oHttp = New XMLHTTP60 ' CreateObject("Msxml2.XMLHTTP")
On Error Resume Next
oHttp.Open "GET", strUrl, False
' On Error GoTo errorhandler:
oHttp.Send
' On Error GoTo errorhandler:
GetLinkStatus = oHttp.Status
Set oHttp = Nothing
End If
Exit Sub
errorhandler:
If Err.Number = 70 Then
Antw = MsgBox("Zugriff auf die Seite " & strUrl & " verweigert", vbOKCancel, "  _
Laufzeitfehler ")
Err.Clear
Else
Antw = MsgBox("Fehler " & Err.Number, vbOKOnly, "Laufzeitfehler")
End If
End Function

Anzeige
AW: Laufzeitfehler abfangen
30.10.2009 14:57:39
dan
Nein, Exit Function statt 'Sub' ...sorry :-)
oder so:
30.10.2009 15:02:18
Anton
Hallo Rüdiger,

Public Function GetLinkStatus(ByVal strUrl As String) As Long      
  Dim oHttp As Object  
  If strUrl <> "" Then  
    If Not VBA.Left(strUrl, 7) = "http://" Then  
      strUrl = "http://" & strUrl
    End If  
    Set oHttp = CreateObject("Msxml2.XMLHTTP")  
    oHttp.Open "GET", strUrl, False  
On Error GoTo errorhandler:    
    oHttp.Send
    GetLinkStatus = oHttp.Status
    Cells(1, 1) = oHttp.responseText
    Set oHttp = Nothing  
  End If  
  Exit Function  
errorhandler:
  MsgBox strUrl & vbCr & "Fehler " & Err.Number & vbCr & Err.Description, vbOKOnly, "Laufzeitfehler"
End Function  

PS:guck hier
https://www.herber.de/forum/messages/1113364.html
mfg Anton
Anzeige
AW: Laufzeitfehler abfangen
30.10.2009 15:24:38
Rüdiger
Hallo Dan,
natürlich
z.B. die Seite www.koegeturist.dk hat den Fehler erzeugt.
beim Anwählen der Seite dauert es einen Moment und jetzt ist mir auch bei den anderen Adressen jedesmal die MSgBox mit Error Number 0 aufgegangen. Deshalb habe ich im Else des errorhandlers noch
if err.number > 0
Msgbox....
endif
eingefügt
Gelaufen ist es z.B. mit www.baikaltours.de
Dank und Gruß
Rüdiger
AW: Laufzeitfehler abfangen
31.10.2009 14:27:28
dan
Hallo Ruediger,
ich weiss nicht ob Du diesen Thread immer noch verfolgst, aber Dien Problem ist, dass in dem Code 'Exit Function' Statement fehlt.
Vor dem Error-Handelr muss immer ein 'Exit' stehen, sonst wird der Handler immer gerufen ... obwohl Err.Number gleich Null ist, weil eigentlich kein Error aufgetaucht ist.
Also was ich meine ist folgendes:
Public Sub SomeProcedure()
' SomeProcedure body hier
Exit Sub
Error_handling:
' Error handler
End Sub
Hoffntlich hilft das :-). Hab einen scheonen Tag, mfg dan. cz.
Anzeige
AW: Laufzeitfehler abfangen
02.11.2009 08:09:07
Rüdiger
Hallo dan,
danke für deinen Hinweis. Ich hab am Wochenende nicht mehr ins Forum geschaut. Deswegen erst jetzt meine Antwort.
Ich hab den Fehler am Freitag abends noch selbst entdeckt und gleich hat's funktioniert!
Mit Dank und Gruß
Rüdiger

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige