Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
ebay trader-API in VBA nutzen
zurück: Werte in ein Array lesen weiter: VBA Activate problem Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
svkr
Gast


Verfasst am:
11. Jun 2011, 11:41
Rufname:

ebay trader-API in VBA nutzen - ebay trader-API in VBA nutzen

Nach oben
       Version: Office 2003

Ich bekomme nicht hin, die Trading-API von ebay in VBA (Excel 2003) zu nutzen. Ich hoffe, es kann mir jemand den passenden Anstoß geben, denn ich sitze schon seit Tagen dran. Mit dem API-Test-Tool klappt es.

Mein Code gibt unter anderem auch den Fehler 21359 zurück. Auch andere Anfrage, wie zB GetMyeBaySelling funktioniert nicht.

Das ganze soll mal soweit enden, dass ich die ebay-Rückmeldung entsprechend als XML weiter verarbeiten kann.

Ich zeige euch mal meinen mageren Code, in der Hoffnung, dass dort vllt schon der Fehler zu finden ist.

Code:
   
Private Sub CommandButton5_Click()
    Dim strURL As String
    Dim objHTTP
    strURL = "https://api.ebay.com/ws/api.dll"
    Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    objHTTP.Open "GET", strURL, False
    objHTTP.SetRequestHeader "X-EBAY-API-COMPATIBILITY-LEVEL", "721"
    objHTTP.SetRequestHeader "X-EBAY-API-DEV-NAME", "xxxDEVKEYxxx"
    objHTTP.SetRequestHeader "X-EBAY-API-APP-NAME", "xxxAPPKEYxxx"
    objHTTP.SetRequestHeader "X-EBAY-API-CERT-NAME", "xxxCERTKEYxxx"
    objHTTP.SetRequestHeader "X-EBAY-API-SITEID", "77"
    objHTTP.SetRequestHeader "X-EBAY-API-CALL-NAME", "GeteBayOfficialTime"
    objHTTP.Send ("C:\Users\PeterD\Desktop\test.xml")
    MsgBox (objHTTP.responsetext)
End Sub


Der Inhalt der test.xml sieht wie folgt aus:


<xml> <-- wird hier nicht korrekt angezeit (?xml version="1.0" encoding="utf-8"?)
<GeteBayOfficialTimeRequest>
<RequesterCredentials>
<eBayAuthToken>xxxTOKENxxx</eBayAuthToken>
</RequesterCredentials>
</GeteBayOfficialTimeRequest>


Die Keys/Token sind im Original entsprechend korrekt eingetragen.

Bitte nicht mit Steinen werfen, aber ein paar Denk-Anstöße könnt ich gebrauchen. Bei Fragen, bitte fragen.

Vielen Dank schonmal im Vorraus.
NichtTerminal
Codewarrior


Verfasst am:
11. Jun 2011, 13:08
Rufname:


AW: ebay trader-API in VBA nutzen - AW: ebay trader-API in VBA nutzen

Nach oben
       Version: Office 2010

Hallo svkr Smile

Ich habe das eBay-API bisher noch nicht ausprobiert, aber da du offensichtlich XML zurück bekommst, probiere doch auch einfach durch Verwendung von MSXML die Abfrage der Daten durchzuführen.

Ich gebe dir mal hier ein Beispiel, wie das gehen kann. In einem anderen Thread in diesem Forum wurde per HTTP eine Abfrage einer Route von Google-Maps vorgestellt (ich glaube bst hat die aktuellste Version davon programmiert). Jedenfalls fand ich das Programm spitze und habe mir daraufhin die möglichen Parameter von Google-Maps mal angeschaut.

Dabei stellte ich fest, dass man sich auch XML-Daten liefern lassen kann. Daher habe ich die folgende Funktion geschrieben:

Code:
Public Function Entfernung(ByVal von As String, ByVal nach As String) As Double
    '
    ' Ermittlung der Entfernung zwischen zwei Adressen mit Hilfe von maps.google.de (kml-Output)
    ' von: Google-Maps Adressbeschreibung des Starts, z. B. "Germany,Berlin"
    ' nach: Google-Maps Adressbeschreibung des Ziels, z. B. "France,Paris"
    ' Rückgabe ist dann die Entfernung laut Google in Kilometern
    '
    Dim google As String
    Dim dok As New DOMDocument40
    Dim knoten As IXMLDOMNodeList
    Dim k As IXMLDOMNode
   
    google = "http://maps.google.de/maps?hl=de&tab=ll&output=kml&saddr={0}&daddr={1}"
    dok.async = False
    dok.Load (Replace(Replace(google, "{0}", von), "{1}", nach))

    If Not (dok Is Nothing) Then
        ' dok.setProperty "SelectionLanguage", "XPath"
        dok.setProperty "SelectionNamespaces", "xmlns:kml='http://earth.google.com/kml/2.0'" ' Wichtig! Sonst klappt SelectNodes nicht.
        Set knoten = dok.DocumentElement.SelectNodes("//kml:Placemark/kml:name[text()='Route']")
        For Each k In knoten
            Dim beschreibung As String
            beschreibung = k.ParentNode.SelectSingleNode("kml:description").Text
            ' HTML-Entity-Konstante für nbsp entfernen
            beschreibung = Replace(beschreibung, " ", "")
            ' Zahlen und Komma zwischen Doppelpunkt und km sind die Entfernung
            beschreibung = Left(beschreibung, InStr(1, beschreibung, "km") - 1)
            beschreibung = Right(beschreibung, Len(beschreibung) - InStr(1, beschreibung, ":"))
            Entfernung = CDbl(beschreibung)
        Next
        Set knoten = Nothing
    End If
    Set dok = Nothing

End Function


Wichtig ist, dass du (wenn du die Funktion einmal ausprobieren willst) in der VBA-Umgebung unter Extras/Verweise ein Häkchen bei Microsoft XML,v6.0 setzt. Die Funktion kann dann anschließend wie eine normale Excel-Funktion im Tabellenblatt verwendet werden.

In der Zeile:

Code:
google = "http://maps.google.de/maps?hl=de&tab=ll&output=kml&saddr={0}&daddr={1}"


Erstelle ich die Aufruf-URL (an die Stelle von {0} kommt später die Startadresse, an die Stelle von {1} die Zieladresse.

Frage: Gibt es bei der eBay-API auch die Möglichkeit, durch URL-Parameter deine Userdaten und deine Abfrage zu übermitteln? So in der Art:

Code:
strURL = "https://api.ebay.com/ws/api.dll?level=721&devname=xxxDEVKEYxxx&..."


Falls das geht, dann könntest du meine Funktion z. B. so umschreiben:

Code:
Public Function eBayAbfrage() As String
    Dim url As String
    Dim dok As New DOMDocument40
   
    url = "https://api.ebay.com/ws/api.dll?level=721&devname=xxxDEVKEYxxx&..."
    dok.async = False
    dok.Load (url)

    If Not (dok Is Nothing) Then eBayAbfrage = dok.XML
End Function


Der Rückgabestring enthält dann die XML-Daten.

Viele Grüße NT. Smile

_________________
name and conquer, 2, 32, 88, 139
NichtTerminal
Codewarrior


Verfasst am:
11. Jun 2011, 14:17
Rufname:

AW: ebay trader-API in VBA nutzen - AW: ebay trader-API in VBA nutzen

Nach oben
       Version: Office 2010

 BonnBerlinDüsseldorfHagenFreiburgMünchenHamburg
Bonn0 km604 km72 km103 km414 km558 km451 km
Berlin598 km0 km559 km506 km807 km585 km288 km
Düsseldorf73 km563 km0 km62 km471 km611 km408 km
Hagen101 km510 km62 km0 km469 km588 km357 km
Freiburg410 km808 km469 km466 km0 km421 km754 km
München558 km589 km612 km589 km414 km0 km775 km
Hamburg448 km289 km400 km357 km757 km775 km0 km

ZelleFormel
C8=Entfernung("Germany,"&$B8;"Germany,"&C$7)
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg


Hallo ich bin's nochmal. Ich hab mal kurz recherchiert und gesehen, dass du die Aufrufparameter einfach hinter die URL schreiben kannst. Das geht also.

Smile

Ich hab mal mit der Entfernung-Funktion eine Entfernungstabelle erstellt. Einfach die Formel in die anderen Zellen der Matrix autoausfüllen und dann füllt sich die Tabelle. Very Happy

Viele Grüße NT. Smile

_________________
name and conquer, 2, 32, 88, 139
Case
Coder


Verfasst am:
11. Jun 2011, 15:38
Rufname: Case
Wohnort: Schwäbisch Hall

AW: ebay trader-API in VBA nutzen - AW: ebay trader-API in VBA nutzen

Nach oben
       Version: Office 2003

Hallo NichtTerminal, Razz

gefällt mir die Funktion - Klasse. Wink

Läuft hier eventuell in einen Fehler, wenn die Version nicht vorhanden ist:

Code:
Dim dok As New DOMDocument40


Habe es bei mir in 60 geändert.


Bekomme es bei mir so zum laufen:

Code:
Public Function Entfernung(ByVal von As String, ByVal nach As String) As Double
    ' http://www.office-loesung.de/ftopic465059_0_0_asc.php
    ' NichtTerminal
    ' Ermittlung der Entfernung zwischen zwei Adressen mit Hilfe von maps.google.de (kml-Output)
    ' von: Google-Maps Adressbeschreibung des Starts, z. B. "Germany,Berlin"
    ' nach: Google-Maps Adressbeschreibung des Ziels, z. B. "France,Paris"
    ' Rückgabe ist dann die Entfernung laut Google in Kilometern
    '
    Dim google As String
    Dim dok As New DOMDocument60
    Dim knoten As IXMLDOMNodeList
    Dim k As IXMLDOMNode
    google = "http://maps.google.de/maps?hl=de&tab=ll&output=kml&saddr={0}&daddr={1}"
    dok.async = False
    dok.Load (Replace(Replace(google, "{0}", von), "{1}", nach))

    If Not (dok Is Nothing) Then
        ' dok.setProperty "SelectionLanguage", "XPath"
        dok.setProperty "SelectionNamespaces", "xmlns:kml='http://earth.google.com/kml/2.0'" ' Wichtig! Sonst klappt SelectNodes nicht.
        Set knoten = dok.DocumentElement.SelectNodes("//kml:Placemark/kml:name[text()='Route']")
        For Each k In knoten
            Dim beschreibung As String
            beschreibung = k.ParentNode.SelectSingleNode("kml:description").Text
            ' HTML-Entity-Konstante für nbsp entfernen
            beschreibung = Replace(beschreibung, "Entfernung: ", "")
            ' Zahlen und Komma zwischen Doppelpunkt und km sind die Entfernung
            beschreibung = Left(beschreibung, InStr(1, beschreibung, "&") - 1)
            'beschreibung = Right(beschreibung, Len(beschreibung) - InStr(1, beschreibung, ":"))
            'beschreibung = Right(beschreibung, Len(beschreibung) - InStr(1, beschreibung, "&"))
            Entfernung = CDbl(beschreibung)
        Next
        Set knoten = Nothing
    End If
    Set dok = Nothing

End Function



Eventuell wäre "Late Binding" auch eine Option:

Code:
Public Function Entfernung(ByVal von As String, ByVal nach As String) As Double
    ' http://www.office-loesung.de/ftopic465059_0_0_asc.php
    ' NichtTerminal
    ' Ermittlung der Entfernung zwischen zwei Adressen mit Hilfe von maps.google.de (kml-Output)
    ' von: Google-Maps Adressbeschreibung des Starts, z. B. "Germany,Berlin"
    ' nach: Google-Maps Adressbeschreibung des Ziels, z. B. "France,Paris"
    ' Rückgabe ist dann die Entfernung laut Google in Kilometern
    '
    Dim google As String
    Dim dok As Object 'New DOMDocument
    Dim knoten As Object 'IXMLDOMNodeList
    Dim k As Object 'IXMLDOMNode
    Set dok = CreateObject("MSXML.DOMDocument")
    google = "http://maps.google.de/maps?hl=de&tab=ll&output=kml&saddr={0}&daddr={1}"
    dok.async = False
    dok.Load (Replace(Replace(google, "{0}", von), "{1}", nach))

    If Not (dok Is Nothing) Then
        ' dok.setProperty "SelectionLanguage", "XPath"
        dok.setProperty "SelectionNamespaces", "xmlns:kml='http://earth.google.com/kml/2.0'" ' Wichtig! Sonst klappt SelectNodes nicht.
        Set knoten = dok.DocumentElement.SelectNodes("//kml:Placemark/kml:name[text()='Route']")
        For Each k In knoten
            Dim beschreibung As String
            beschreibung = k.ParentNode.SelectSingleNode("kml:description").Text
            ' HTML-Entity-Konstante für nbsp entfernen
            beschreibung = Replace(beschreibung, "Entfernung: ", "")
            ' Zahlen und Komma zwischen Doppelpunkt und km sind die Entfernung
            beschreibung = Left(beschreibung, InStr(1, beschreibung, "&") - 1)
            'beschreibung = Right(beschreibung, Len(beschreibung) - InStr(1, beschreibung, ":"))
            'beschreibung = Right(beschreibung, Len(beschreibung) - InStr(1, beschreibung, "&"))
            Entfernung = CDbl(beschreibung)
        Next
        Set knoten = Nothing
    End If
    Set dok = Nothing

End Function


Servus
Case
svkr
Gast


Verfasst am:
11. Jun 2011, 21:25
Rufname:

-

Nach oben
       Version: Office 2003

Hallo NichtTerminal
Vielen Dank erstmal für deine Antwort.
Zitat:
Frage: Gibt es bei der eBay-API auch die Möglichkeit, durch URL-Parameter deine Userdaten und deine Abfrage zu übermitteln?

Nein. Diese Möglichkeit gibt es leider bei der trader-Schnittstelle nicht. Zumindest konnte ich nichts finden. Bei der shopping-Schnittstelle von eBay ist das möglich. Das würde ich auch hinbekommen. Dieses Verfahren habe ich bereits bei einer anderen API erfolgreich genutzt.
Leider benötige ich jedoch Zugriff auch die trader-Schnittstelle, da ich GeMyeBaySelling auslesen möchte.
Wenn ich mir deine Fkt ansehe, machst du ja einen URL-Aufruf mit entsprechenden Parametern und passt das Ergebnis dann an. Das kann ich leider für meine Fall nicht entsprechend anpassen. Sad

VG svkr
NichtTerminal
Codewarrior


Verfasst am:
12. Jun 2011, 01:29
Rufname:

AW: ebay trader-API in VBA nutzen - AW: ebay trader-API in VBA nutzen

Nach oben
       Version: Office 2010

Hallo Case. Smile

Vielen Dank für deinen Tipp. Es auf Late Binding umzustellen ist ne prima Idee. Wenn es erstmal läuft kann man das ja praktisch immer machen, um Versionskonflikte zu vermeiden. Smile

Eine Sache fehlt in der Function allerdings noch: Gegebenenfalls müssen Leerzeichen in der Ortsbeschreibung durch %20 ersetzt werden. Soweit ich mich erinnere sind nämlich Leerzeichen in URLs nicht erlaubt. Ansonsten kann ich dir nur zustimmen, die Funktion ist wirklich (dank der Möglichkeiten, die Google-Maps bietet) recht "cool".

Viele Grüße NT. Smile

_________________
name and conquer, 2, 32, 88, 139
NichtTerminal
Codewarrior


Verfasst am:
12. Jun 2011, 01:43
Rufname:

-

Nach oben
       Version: Office 2010

svkr - 11. Jun 2011, 21:25 hat folgendes geschrieben:
Hallo NichtTerminal
Vielen Dank erstmal für deine Antwort.
Zitat:
Frage: Gibt es bei der eBay-API auch die Möglichkeit, durch URL-Parameter deine Userdaten und deine Abfrage zu übermitteln?

Nein. Diese Möglichkeit gibt es leider bei der trader-Schnittstelle nicht. Zumindest konnte ich nichts finden. Bei der shopping-Schnittstelle von eBay ist das möglich. Das würde ich auch hinbekommen. Dieses Verfahren habe ich bereits bei einer anderen API erfolgreich genutzt.
Leider benötige ich jedoch Zugriff auch die trader-Schnittstelle, da ich GeMyeBaySelling auslesen möchte.
Wenn ich mir deine Fkt ansehe, machst du ja einen URL-Aufruf mit entsprechenden Parametern und passt das Ergebnis dann an. Das kann ich leider für meine Fall nicht entsprechend anpassen. Sad

VG svkr


Hallo svkr Smile

Bist du dir sicher, dass es mit der Trader-Schnittstelle nicht geht? Ich habe schon längere Zeit nichts mehr direkt mit HTTP gemacht, aber wenn ich mich nicht irre, dann arbeitet die GET-Methode doch immer mit URL-Parametern, das was du mit den SetRequestHeader-Methoden setzt, wird IMHO mit ? eingeleitet und als Key/Value-Paar durch & getrennt an die URL drangehängt.

Du kannst deinen "HTTP-Verkehr" mit Programmen wie Fiddler2:

http://www.fiddler2.com/fiddler2/

sehr gut nachverfolgen und analysieren. Probier es doch einfach mal aus, deine Parameter mit den Werten hinter die URL zu setzen. Smile

Viele Grüße NT. Smile

_________________
name and conquer, 2, 32, 88, 139
svkr
Gast


Verfasst am:
12. Jun 2011, 04:07
Rufname:


Lösung! - Lösung!

Nach oben
       Version: Office 2003

Hallo nochmal.
Danke nochmal für die Hilfe. Letztendlich kann ich hier die Lösung meines Problems präsentieren. Ich bekomme endlich die Rückmeldung von eBay, die ich erwartet habe. Ich hoffe, der Code kann eventuell auch anderen behilflich sein.

Code:
Private Sub CommandButton5_Click()
    Dim strURL As String
    Dim objHTTP
    Dim myxml As String
   
    myxml = "<xml>" & _
            "<GeteBayOfficialTimeRequest>" & _
            "<RequesterCredentials>" & _
            "<eBayAuthToken>xxxTOKENxxx</eBayAuthToken>" & _
            "</RequesterCredentials>" & _
            "</GeteBayOfficialTimeRequest>"
   
    strURL = "https://api.ebay.com/ws/api.dll"
    Set objHTTP = CreateObject("Microsoft.xmlhttp")
    objHTTP.Open "POST", strURL, False
   
    objHTTP.SetRequestHeader "X-EBAY-API-COMPATIBILITY-LEVEL", " 721"
    objHTTP.SetRequestHeader "X-EBAY-API-DEV-NAME", "xxxDEVIDxxx"
    objHTTP.SetRequestHeader "X-EBAY-API-APP-NAME", "xxxAPPIDxxx"
    objHTTP.SetRequestHeader "X-EBAY-API-CERT-NAME", "xxxCERTIDxxx"
    objHTTP.SetRequestHeader "X-EBAY-API-SITEID", "77"
    objHTTP.SetRequestHeader "X-EBAY-API-CALL-NAME", "GeteBayOfficialTime"

    objHTTP.Send (myxml)
    MsgBox (objHTTP.responsetext)
End Sub
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: ebay Verkaufsgebühren bei Nutzung mehrerer Kategorien 9 Gast 104 10. Feb 2014, 13:46
Gast ebay Verkaufsgebühren bei Nutzung mehrerer Kategorien
Keine neuen Beiträge Excel Formeln: Index + Vergleich in einer Matrix mit mehr Spalten nutzen? 4 SvenLBG 97 08. Mai 2013, 14:33
Gast Index + Vergleich in einer Matrix mit mehr Spalten nutzen?
Keine neuen Beiträge Excel Formeln: Ergebnis der Adresse Funktion in neuer Formel nutzen 7 feuermagier 794 16. Jan 2013, 22:54
escape21 Ergebnis der Adresse Funktion in neuer Formel nutzen
Keine neuen Beiträge Excel Formeln: Name Excelsheet variabel in Arrayformel nutzen 2 La Panadera 97 08. Jan 2013, 14:00
La Panadera Name Excelsheet variabel in Arrayformel nutzen
Keine neuen Beiträge Excel Formeln: Zellinhalt als "Name" nutzen 4 Flauschus 85 16. Okt 2012, 10:25
Flauschus Zellinhalt als "Name" nutzen
Keine neuen Beiträge Excel Formeln: Nach dem Nutzen von einem Filter erscheint #name 3 Tom2010 189 22. Sep 2010, 10:32
Tom2010 Nach dem Nutzen von einem Filter erscheint #name
Keine neuen Beiträge Excel Formeln: "&" über Bereich nutzen (Wie "SUMME" 8 lea2 291 05. Jul 2010, 14:08
Zero "&" über Bereich nutzen (Wie "SUMME"
Keine neuen Beiträge Excel Formeln: SVERWEIS noch weiter nutzen 23 AndiLA 1016 10. Dez 2009, 10:58
AndiLA SVERWEIS noch weiter nutzen
Keine neuen Beiträge Excel Formeln: Aus Zelle einen Blattnamen auslesen + in Formel nutzen 0 Frederik78546 2422 14. Aug 2009, 11:46
Frederik78546 Aus Zelle einen Blattnamen auslesen + in Formel nutzen
Keine neuen Beiträge Excel Formeln: Ebay Angebotsgebühr und Verkaufsprovision berechnen 29 Gast 7284 02. Mai 2008, 23:19
stirlimo Ebay Angebotsgebühr und Verkaufsprovision berechnen
Keine neuen Beiträge Excel VBA (Makros): Beim nutzen der Check box Daten in ander Datentabelle senden 1 Arn 596 16. Jan 2008, 00:35
losgehts Beim nutzen der Check box Daten in ander Datentabelle senden
Keine neuen Beiträge Excel VBA (Makros): Link wie buttons nutzen 6 power-tower 397 11. Okt 2007, 14:41
power-tower Link wie buttons nutzen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Dreamweaver Forum