Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Referent zu "WinHTTP Services" AUTOMATISCH setzen

Forumthread: Referent zu "WinHTTP Services" AUTOMATISCH setzen

Referent zu "WinHTTP Services" AUTOMATISCH setzen
25.04.2014 13:22:06
Fred
Hallo miteinander,
mit dem Code unten teste ich, ob eine Internet-Seite existiert. Es funktioniert alles, wenn ich von Hand im VBA-Editor \Extras \Verweise und dann die aktuellste "Microsoft WinHTTP Services Version" auswähle.
Diese Auswahl der Referenz möchte ich nun in VBA automatisieren, so dass meine Datei auch funktioniert, wenn sie auf einem anderen Rechner geöffnet wird, auf dem die Referenz nicht gesetzt ist.
Sachdienliche Hinweise sehr willkommen,
Danke
Fred
Hier mein Code:
Dim oURL As New WinHttpRequest
On Error GoTo TestURL_Err
With oURL
.Open "GET", strURLToTest, False
.Send
TestIfURL_Exists = (.Status = 200)
End With
TestURL_Err:
Set oURL = Nothing

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
late binding<-->early binding
25.04.2014 13:35:25
ransi
HAllo
Versuch mal so:
Option Explicit


Public Sub machs()
    MsgBox TestIfURL_Exists("http://herber.de")
End Sub


Function TestIfURL_Exists(strURLToTest)
    Dim oURL As Object
    Set oURL = CreateObject("WinHttp.WinHttpRequest.5.1") '
    On Error GoTo TestURL_Err
    With oURL
        .Open "GET", strURLToTest, False
        .Send
        TestIfURL_Exists = (.Status = 200)
    End With
    TestURL_Err:
    Set oURL = Nothing
End Function


Das sollte auch ohne den Verweis funktionieren.
ransi

Anzeige
AW: late binding<-->early binding
25.04.2014 13:47:11
Fred
Ausgezeichnet, ransi!
Schnell und richtig.
Vielen Dank.
Grüße Fred
;
Anzeige
Anzeige

Infobox / Tutorial

Automatisierte Nutzung von WinHTTP Services in VBA


Schritt-für-Schritt-Anleitung

Um die Microsoft WinHTTP Services in deinem VBA-Projekt automatisch zu nutzen, folge diesen Schritten:

  1. Code für die URL-Überprüfung: Erstelle ein neues Modul in deinem Excel VBA-Editor und füge den folgenden Code ein:

    Option Explicit
    
    Public Function TestIfURL_Exists(strURLToTest As String) As Boolean
       Dim oURL As Object
       Set oURL = CreateObject("winhttp.winhttprequest.5.1")
       On Error GoTo TestURL_Err
    
       With oURL
           .Open "GET", strURLToTest, False
           .Send
           TestIfURL_Exists = (.Status = 200)
       End With
    
       Exit Function
    
    TestURL_Err:
       Set oURL = Nothing
    End Function
  2. Verwendung der Funktion: Du kannst die Funktion TestIfURL_Exists nun in einem anderen Sub verwenden. Zum Beispiel:

    Public Sub TestURL()
       MsgBox TestIfURL_Exists("http://herber.de")
    End Sub
  3. Fehlersuche: Falls der Code nicht funktioniert, stelle sicher, dass du die Microsoft WinHTTP Services korrekt installiert hast. Du kannst die Version 5.1 von der Microsoft-Website herunterladen, falls erforderlich.


Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden": Dies kann auftreten, wenn die WinHTTP-Bibliothek nicht korrekt referenziert ist. Stelle sicher, dass du CreateObject("winhttp.winhttprequest.5.1") verwendest, um die Instanz zu erstellen.

  • Fehler: "HTTP-Statuscode 404": Dies bedeutet, dass die angegebene URL nicht existiert. Überprüfe die URL auf Schreibfehler.

  • Fehler: "Zugriff verweigert": Dies kann durch Netzwerksicherheitsrichtlinien verursacht werden. Stelle sicher, dass du die richtigen Berechtigungen hast, um auf die URL zuzugreifen.


Alternative Methoden

Eine alternative Möglichkeit, HTTP-Anfragen durchzuführen, ist die Verwendung der XMLHTTP-Klasse. Hier ist ein Beispiel:

Public Function TestIfURL_Exists_XMLHTTP(strURLToTest As String) As Boolean
    Dim oXMLHTTP As Object
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")

    On Error GoTo TestURL_Err
    oXMLHTTP.Open "GET", strURLToTest, False
    oXMLHTTP.Send

    TestIfURL_Exists_XMLHTTP = (oXMLHTTP.Status = 200)

    Exit Function

TestURL_Err:
    Set oXMLHTTP = Nothing
End Function

Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung der WinHTTP-Klasse:

  1. Überprüfung mehrerer URLs: Du kannst eine Schleife verwenden, um mehrere URLs zu überprüfen:

    Public Sub CheckMultipleURLs()
       Dim urls As Variant
       Dim url As Variant
    
       urls = Array("http://herber.de", "http://example.com", "http://nonexistent.url")
    
       For Each url In urls
           If TestIfURL_Exists(url) Then
               Debug.Print url & " ist erreichbar."
           Else
               Debug.Print url & " ist nicht erreichbar."
           End If
       Next url
    End Sub

Tipps für Profis

  • Verwendung von Fehlerbehandlung: Implementiere eine robuste Fehlerbehandlung in deinem Code, um unerwartete Probleme beim Ausführen von HTTP-Anfragen zu behandeln.

  • Optimierung der Netzwerkgeschwindigkeit: Verwende die SetTimeouts-Methode von WinHTTP, um die Zeitlimits für Verbindungen zu steuern.

  • HTTP-Header anpassen: Du kannst benutzerdefinierte HTTP-Header an deine Anfragen anhängen, indem du die setRequestHeader-Methode verwendest.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Early Binding und Late Binding?
Early Binding erfordert eine spezifische Referenz im VBA-Editor, während Late Binding die Erstellung von Objekten zur Laufzeit ermöglicht, was flexibler ist.

2. Wo kann ich die Microsoft WinHTTP Services Version 5.1 herunterladen?
Die Version kann über die offizielle Microsoft-Website heruntergeladen werden. Suche nach "microsoft winhttp services version 5.1 download".

3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen. Stelle sicher, dass die WinHTTP-Bibliothek installiert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige