Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

MSXML2.XMLHTTP60 Problem mit .open

Forumthread: MSXML2.XMLHTTP60 Problem mit .open

MSXML2.XMLHTTP60 Problem mit .open
27.08.2020 15:50:49
Peter
Ich verseuche von einem REST Server Daten im ein Excsel Worksheet zu übernehmen.
Doch habe ich ein fundamentales Problem, dass die URL Adresse in der Methode .open nur als String funktioniert und nicht als String-Variable.
Mein Code sieht gekürzt folgendermassen aus:
Public Const urlVF As String = "https//www.xy.de/interface/rest/"
Dim req As New MSXML2.XMLHTTP60
Dim urlSTR As String
Dim answer As String
Sub openRESTsesion()
urlSTR = urlVF & "auth/accesstoken"
With req
.Open "GET", urlSTR, False
.Send
answer = req.ResponseText
End With
End Sub
So erscheint für .open die Fehlermeldung Laufzeitfehler '-2147012890 (80072ee6)':
Setze ich allerdings bei .open Anstelle der Variable urlSTR den String ein also
.Open "GET", "https://www.xy.de/interface/rest/auth/accesstoken", False
Funktioniert es.
Googeln nach dem Laufzeitfehler hat mir leider nicht geholfen.
Woran liegt das wohl?
Ich kann mir vorstellen, dass entweder ein Verweis fehlt oder sich mit einem anderen nicht verträgt. Installiert habe ich:
Visual Basic For Appications
Microsoft Excel 16.0 Object Library
OLE Automation
Microsoft Office 16.0 Object Library
Microsoft XML, v6.0
Microsoft Scripting Runtime
Microsoft HTML Object Library
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Quatsch in CONST fehlt : nach https (owT)
27.08.2020 16:01:07
EtoPHG

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

MSXML2.XMLHTTP60 Problem mit .open beheben


Schritt-für-Schritt-Anleitung

  1. VBA-Umgebung öffnen: Öffne Microsoft Excel und drücke ALT + F11, um den Visual Basic-Editor zu starten.

  2. Verweise setzen:

    • Gehe zu Extras > Verweise.
    • Stelle sicher, dass "Microsoft XML, v6.0" aktiviert ist, da dies für die Nutzung von MSXML2.XMLHTTP60 notwendig ist.
  3. Code eingeben:

    • Füge den folgenden Code in ein neues Modul ein. Achte darauf, die URL richtig zu formatieren:
    Public Const urlVF As String = "https://www.xy.de/interface/rest/"
    Dim req As New MSXML2.XMLHTTP60
    Dim urlSTR As String
    Dim answer As String
    
    Sub openRESTsesion()
       urlSTR = urlVF & "auth/accesstoken"
       With req
           .Open "GET", urlSTR, False
           .Send
           answer = req.ResponseText
       End With
    End Sub
  4. Fehlerbehebung: Wenn du den Laufzeitfehler '-2147012890 (80072ee6)' erhältst, überprüfe, ob die URL korrekt ist und die Verbindung zum Server hergestellt werden kann.

  5. Code ausführen: Drücke F5, um das Skript auszuführen und die Daten abzurufen.


Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler '-2147012890 (80072ee6)'
    Lösung: Stelle sicher, dass die URL korrekt formatiert ist. Ein häufiges Problem ist das Fehlen des Doppelpunkts nach "https".

  • Fehler: Kein Verweis auf MSXML2
    Lösung: Überprüfe die Verweise in der VBA-Umgebung und aktiviere "Microsoft XML, v6.0".


Alternative Methoden

Wenn du Probleme mit MSXML2.XMLHTTP60 hast, kannst du auch andere Methoden verwenden, um HTTP-Anfragen zu stellen:

  1. WinHttp.WinHttpRequest: Eine Alternative, die unter bestimmten Bedingungen stabiler sein kann.

    Dim httpRequest As Object
    Set httpRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
    httpRequest.Open "GET", urlSTR, False
    httpRequest.Send
    answer = httpRequest.ResponseText
  2. XMLHTTP: Eine leichtere Version von MSXML2.XMLHTTP60, die einfacher zu nutzen ist.


Praktische Beispiele

Hier sind einige praktische Anwendungsbeispiele:

  • Daten von einer API abrufen:

    Sub getDataFromAPI()
      Dim req As New MSXML2.XMLHTTP60
      Dim url As String
      url = "https://api.example.com/data"
    
      With req
          .Open "GET", url, False
          .Send
          Debug.Print req.ResponseText ' Gibt die Antwort in das Direktfenster aus
      End With
    End Sub
  • Fehlerbehandlung:

    Sub openRESTsesionWithErrorHandling()
      On Error GoTo ErrorHandler
      ' ... (dein Code hier)
      Exit Sub
    
      ErrorHandler:
      MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
    End Sub

Tipps für Profis

  • Debugging: Nutze Debug.Print, um die Variablenwerte während des Laufs zu überprüfen. Das hilft, mögliche Fehlerquellen schnell zu identifizieren.

  • Asynchrone Anfragen: Wenn du große Datenmengen abrufen musst, ziehe asynchrone Anfragen in Betracht, um die Performance zu verbessern.

  • Sicherheit: Achte darauf, dass du HTTPS für sichere Verbindungen verwendest und die URLs vor der Verwendung überprüfst.


FAQ: Häufige Fragen

1. Warum funktioniert die URL-Variable nicht?
Die URL-Variable muss korrekt formatiert sein. Achte darauf, dass du den korrekten Protokollprefix (https://) verwendest.

2. Was kann ich tun, wenn der Laufzeitfehler weiterhin auftritt?
Überprüfe die Internetverbindung und die Erreichbarkeit des Servers. Eventuell blockiert eine Firewall die Anfrage.

3. Wo finde ich die MSXML2.XMLHTTP60 Bibliothek?
Sie sollte standardmäßig mit Microsoft Office installiert sein. Überprüfe die Verweise in der VBA-Umgebung, um sicherzustellen, dass sie aktiviert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige