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 aus WWW laden und weiterverarbeiten

Daten aus WWW laden und weiterverarbeiten
20.11.2015 11:46:48
Claus
Hallo Excel-Spezialisten,
Bezug Daten einer API laden von Claus vom 04.11.2015 19:14:40
Hier hatte mir Sepp geholfen und der Code funktioniert auch prima.
Jetzt benötige ich Informationen aus einer sehr ähnlichen Datei, bekomme das aber nicht hin.
Die Adresse ist zudem variabel und lautet: http://www.karopapier.de/api/game/xxxxx/info..j
s o n (natürlich json ohne Leerstellen - diesen link darf ich aber nicht posten)
xxxxx steht dabei in Tabelle "API" in Zelle B1. Ein ganz gutes Beispiel wäre: http://www.karopapier.de/api/game/87447/info.j
s o n
Jetzt sieht man schon ein kleines Problem mit den Umlauten… \u00fc sollte nämlich ein ü sein. Gibt es dafür eine Standartlösung? Kann man aber auch jetzt mal weglassen, das bekomme ich dann auch noch gesondert hin, im Zweifelsfall so verunstaltet ginge zu Beginn auch (ist ja nur Optik)
Jetzt bräuchte ich eine Funktion die nach einem "Suchbegriff Anfang" sucht und danach die Zeichen bis zu einem "Suchbegriff Ende" ausliest - und das so oft wie der "Suchbegriff Anfang" vorkommt. Zusätzlich kann es noch sein, dass "Suchbegriff Anfang" x mal übersprungen werden muss.
in Tabelle "API": "Suchbegriff Anfang" in Zelle C1, "Suchbegriff Ende" in Zelle D1, x mal übersprungen in E1
Beispiel: B1: 87447
C1:Suchbegriff Anfang: "name":
D1: Suchbegriff Ende: ","color":
E1: 1
Ergebnis müsste dann sein:
volscher
Botrix
flinkman
HansDampf
Chris601
AnniHa
Achtung, Miez nicht mehr weil danach ja Suchbegriff Ende nicht mehr vorkommt
Also ein Großteil des Codes steckt schon in der Lösung des ähnlichen Problems von Sepp… diesen Code hab ich auch schon etliche male schrittweise nachvollzogen, beim Anpassen kommen dann aber Syntaxfehler ö.ä. Hier ist es nun eben viel universeller mit den Variablen und ich denke ich hätte dann alles um meine selbstgestrickte Infoseite (die dann Zig dieser Dateien auswertet und übersichtlich zusammenfassen soll) vollends selbst bauen zu können.
Vielen Dank und liebe Grüße
Claus

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus WWW laden und weiterverarbeiten
20.11.2015 14:06:41
Claus
Der Code von Sepp war folgender (ich schaff es nicht auf den alten fred zu verlinken)
' **********************************************************************
' 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.j s o n"
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

Anzeige
AW: Daten aus WWW laden und weiterverarbeiten
21.11.2015 12:21:34
Claus
Hallo Sepp,
probier mal... ja, das is gut. Und dahinter steckt dann ganz, ganz genau das was ich wollte. Suuuper. Hab zwar im Moment fast keine Zeit - aber ein paar Testbeispiele haben alle funktioniert. Jetzt (vermutlich leider erst morgen, heute Winterreifen drauf, Wohnung durchsaugen, Posaune üben und einen Auftritt mit unserer Big Band spielen) kann ich an meinem geplanten Karopapiertool weiterbasteln.
Mir ist es ja fast schon peinlich, das war ja fast ne Auftragsprogrammierung. Da kann ich nur hoffen, dass es dich eben auch freut zu hören, dass ich mich grade riesig freue.
Liebe Grüße
Claus
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige