Und hier noch eine Beschreibung, wie die Daten, die im JSON-Format daherkommen, direkt verarbeitet werden können. Die Ausgabe ist dadurch schneller:
Ihr ladet euch von https://github.com/VBA-tools/VBA-JSON das File JsonConverter.bas runter und bindet es als Modul in die vorhandene Datei ein. Im VBA-Editor aktiviert ihr die "Microsoft Scripting Runtime".
(Einfach draufklicken, wenn es matschig aussieht).
Anschließend erstellt ihr ein neues Modul und bindet folgenden Kot ein (vorher noch das Tabellenblatt in "Dividenden" umbenennen).
Das war es auch schon. Nicht vergessen, das (oder den?) Token einzubinden.
Eine Roh-Datei sieht z.B. so aus:
Sie wird in ihre Items zerlegt und die Werte den entsprechenden Items zugewiesen.
Wer mehr Informationen raussaugen möchte, muss die Zeilen
entsprechend erweitern
Ihr ladet euch von https://github.com/VBA-tools/VBA-JSON das File JsonConverter.bas runter und bindet es als Modul in die vorhandene Datei ein. Im VBA-Editor aktiviert ihr die "Microsoft Scripting Runtime".
(Einfach draufklicken, wenn es matschig aussieht).
Anschließend erstellt ihr ein neues Modul und bindet folgenden Kot ein (vorher noch das Tabellenblatt in "Dividenden" umbenennen).
Code:
Sub Dividendenabfrage()
Dim jsonText As String
Dim jsonObject As Object, item As Object
Dim ws As Worksheet
Dim Zaehler As Integer
Set ws = Worksheets("Dividenden")
' *******************************************************************
Dim urlText As String
Dim urlText2 As String
Dim url_1 As String
Dim Datum As Date
Dim Monat As Integer
Dim Dividende As Double
Dim JahrSpalte As Integer
Zaehler = 6
ws.Range("B6:M1000").ClearContents ' sauber machen
JahrSpalte = 2 ' falls die Spalten erweitert werden, hier die aktuelel Spalte des Jahres eintragen. Im Beispiel ist das Spalte 2. Das Jahr steht an B3.
aktjahr = ws.Cells(3, JahrSpalte).Value
Do While Not IsEmpty(ws.Cells(Zaehler, 1).Value)
Ticker = ws.Cells(Zaehler, 1).Value
' ---------- Token ------------------
Token = "<hier Token einfügen>"
' ---------- Token ------------------
url_1 = "https://cloud.iexapis.com/stable/stock/" + Ticker + "/dividends/1y?token=" + Token
Set AB = CreateObject("MSXML2.XMLHTTP")
AB.Open "GET", url_1, False
AB.Send
'url content
urlText = AB.ResponseText
urlText2 = AB.ResponseBody
' *******************************************************************
jsonText = urlText
Set jsonObject = JsonConverter.ParseJson(jsonText)
For Each item In jsonObject
Datum = item("paymentDate")
Dividende = item("amount")
If Year(Datum) = aktjahr Then
Monat = Month(Datum)
ws.Cells(Zaehler, JahrSpalte + Monat - 1).Value = Dividende
End If
Next
Zaehler = Zaehler + 1
Loop
End Sub
Eine Roh-Datei sieht z.B. so aus:
Code:
[{"exDate":"2019-07-03","paymentDate":"2019-08-05","recordDate":"2019-07-05","declaredDate":"2019-06-05","amount":0.18,"flag":"No Change QoQ","currency":"USD","description":"ABM Industries Declares Quarterly Dividend $0.18 Per Share\t","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2019-04-03","paymentDate":"2019-05-06","recordDate":"2019-04-04","declaredDate":"2019-03-06","amount":0.18,"flag":"No Change QoQ","currency":"USD","description":"ABM Industries Declares Quarterly Dividend $0.18 Per Share ","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2019-01-02","paymentDate":"2019-02-04","recordDate":"2019-01-03","declaredDate":"2018-12-18","amount":0.18,"flag":"Increase","currency":"USD","description":"ABM Industries Hikes Quarterly Dividend 2.86%","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2018-10-03","paymentDate":"2018-11-05","recordDate":"2018-10-04","declaredDate":"2018-09-06","amount":0.175,"flag":"No Change QoQ","currency":"USD","description":"ABM Industries Declares Quarterly Dividend of $0.175 Per Share","frequency":"Quarterly","date":"2019-06-12"},{"exDate":"2018-07-03","paymentDate":"2018-08-06","recordDate":"2018-07-05","declaredDate":"2018-06-06","amount":0.175,"flag":"No Change QoQ","currency":"USD","description":"ABM Industries Declares Quarterly Dividend of $0.175 Per Share","frequency":"Quarterly","date":"2019-06-12"}]
Sie wird in ihre Items zerlegt und die Werte den entsprechenden Items zugewiesen.
Wer mehr Informationen raussaugen möchte, muss die Zeilen
Code:
Datum = item("paymentDate")
Dividende = item("amount")