Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1456to1460
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

Daten einer API laden

Daten einer API laden
04.11.2015 19:14:40
Claus
Hallo Excel-Spezialisten,
kann ein Makro die Daten einer API laden und weiterverarbeiten?
Beispiel:
http://www.karopapier.de/api/user/773/dran.j s o n (natürlich json ohne Leerstellen - diesen link darf ich aber nicht posten)
hiervon möchte ich nach "GID=" suchen und jeweils die Zahl danach im Tabellenblatt API in Zelle A1 ... bis Ax haben.
Z. B.: (ändert sich aber oft)
A1: 83789
A2: 87405
A3: 87235
A4: 87321
Es handelt sich aber nicht zwingend um 5-stellige Zahlen (bald kommt die sechste Stelle dazu)
Vielen Dank und liebe Grüße
Claus

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten einer API laden
04.11.2015 21:38:34
Sepp
Hallo Claus,
was hat das mit API zu tun?
das ist ene einfache Textdatei.
Probier mal.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller _
  As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB _
  As Long) As Long


Private Function TextReadAll(ByVal FileName As String) As String
Dim FF As Integer, strText As String

On Error Resume Next

FF = FreeFile
Open FileName For Binary As #FF
strText = Space$(LOF(FF))
Get #FF, , strText
Close #FF
TextReadAll = strText

On Error GoTo 0
Err.Clear
End Function


Public Sub test()
Dim strTmp As String, strSrc As String, strFile As String
Dim varTmp() As Variant
Dim lngI As Long, lngP1 As Long, lngP2 As Long

On Error GoTo ErrorHandler

strSrc = "http://www.karopapier.de/api/user/773/dran.json"
strFile = Environ("TEMP") & "\tmp.json"

Call URLDownloadToFile(0, strSrc, strFile, 0, 0)

If Dir(strFile, vbNormal) <> "" Then
  strTmp = TextReadAll(strFile)
  
  Do
    lngP1 = InStr(lngP1 + 1, strTmp, "GID=")
    If lngP1 > 0 Then
      lngP2 = InStr(lngP1, strTmp, "}")
      If lngP2 > 0 Then
        Redim Preserve varTmp(lngI)
        varTmp(lngI) = Clng(Mid(strTmp, lngP1 + 4, lngP2 - lngP1 - 5))
        lngI = lngI + 1
      End If
    End If
  Loop While lngP1 > 0 And lngP2 > 0
  
  If lngI > 0 Then
    Sheets("API").Range("A1").Resize(lngI, 1) = Application.Transpose(varTmp)
  End If
  
  Kill strFile
End If

ErrorHandler:

With Err
  If .Number <> 0 Then
    MsgBox "Fehler in Prozedur:" & vbTab & "'test'" & vbLf & String(60, "_") & _
      vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
      "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
      .Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
      "VBA - Fehler in Prozedur - test"
    .Clear
  End If
End With

On Error GoTo 0

End Sub

Gruß Sepp

Anzeige
AW: Daten einer API laden
05.11.2015 09:09:53
Claus
Hallo Sepp,
wow - das ist ja echt viel Code. Vielen Dank dafür. Auf die schnelle kam da aber ne Fehlermeldung und mein Problem ist, dass ich grad Streß wegen was Anderem habe - ich muss dieses Thema also zurückstellen. Ich werde es also in ein paar Tagen wieder probieren und mich dann ggf. zwecks Rückfrage melden, ok?
Liebe Grüße
Claus

AW: Daten einer API laden
05.11.2015 12:46:21
Claus
Hallo Sepp,
hab jetzt mal den Code als Makro gespeichert, da kommt:
Fehler beim Kompilieren:
Innerhalb einer Prozedur ungültig
und Option Explicit ist markiert...
vermutlich ist mir nicht klar, wie genau ich diesen Code einbinden muss?

Anzeige
'Option Explicit' steht bei Sepp am Anfang des ...
05.11.2015 17:56:25
Luc:-?
…Moduls, Claus,
und so muss das auch bleiben (man kann das auch im VBE einstellen, dann kommt es automatisch). Gleiches gilt für alles Folgende. Nicht in irgendeine Prozedur hineinkopieren! So etwas sollte man auch bei bescheidenen VBA-Kenntnissen erwarten dürfen!
Gruß, Luc :-?
Besser informiert mit …

AW: Daten einer API laden
05.11.2015 19:51:24
Sepp
Hallo Claus,
in deiner Datei, einfach im Visual-Basic-Editor (VBE) ein allgemeines Modul (Einfügen > Modul) einfügen und den gesamten Code hineinkopieren und die Prozedur "Test" ausführen.
Gruß Sepp

Anzeige
AW: Daten einer API laden
06.11.2015 13:38:56
Claus
Hallo Sepp,
ja! Es funktioniert. Super vielen Dank dafür.
Hallo Luc:
stimmt, selbst bei VBA bescheiden sollte man das wissen. Sorry, ich hab da falsch angegeben - ich kann VBA gar nicht, sondern ich erzeuge Makros durch Aufzeichnen und ändere dann drin rum. Deshalb fehlen mir die grundlegenden Rahmenbedingungen. Ich sollte mich da wohl mal ein wenig einarbeiten. Dann hätte ich nämlich gleich feststellen können, dass Sepp mir genau den Code gegeben hat den ich brauche. Tut mir leid, dass ich unnötig Arbeit erzeugt habe.
In diesem Zusammenhang möchte ich noch kurz erwähnen, dass mir schon mehrfach prima hier geholfen wurde und ich sehr dankbar und zufrieden bin.
Liebe Grüße
Claus
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige