VBA-JSON Werte aus Zellen einfügen
Schritt-für-Schritt-Anleitung
-
VBA-Editor öffnen: Drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Modul erstellen: Klicke auf Einfügen
> Modul
, um ein neues Modul zu erstellen.
-
Code einfügen: Kopiere den folgenden Code in das Modul:
Sub GetVolume()
Dim objHTTP As Object, lngZeile As Long, strAntwort As String
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
With ThisWorkbook.Worksheets("Tabelle1")
For lngZeile = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
objHTTP.Open "GET", "https://api.coincap.io/v2/candles?exchange=" & .Cells(lngZeile, 1), False
objHTTP.Send
strAntwort = objHTTP.ResponseText
If InStr(strAntwort, "volume") Then
strAntwort = Mid(strAntwort, InStr(strAntwort, "volume") + 9, 999)
strAntwort = Left(strAntwort, InStr(strAntwort, """") - 1)
.Cells(lngZeile, 2) = strAntwort
Else
.Cells(lngZeile, 2) = "Server antwortet nicht"
End If
Next lngZeile
End With
End Sub
-
Parameter anpassen: Stelle sicher, dass der Link korrekt ist und die Parameter aus den Zellen auf deinem Arbeitsblatt entnommen werden.
-
Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, indem du ALT + F8
drückst, das Makro wählst und auf Ausführen
klickst.
Häufige Fehler und Lösungen
- Fehler: "Ungültiger Prozedurausdruck oder ungültiges Argument": Stelle sicher, dass der API-Link korrekt ist und die Parameter richtig gesetzt sind. Überprüfe auch, ob die Verbindung zum Server funktioniert.
- Fehler: "Server antwortet nicht": Dies kann an einer Überlastung des Servers liegen. Versuche es später erneut oder prüfe die API-Dokumentation auf Änderungen.
- Fehler beim Zugriff auf Zellen: Achte darauf, dass die Zellen, von denen du die Werte abziehst, korrekt angegeben sind (z.B.
Range("A1").Value
).
Alternative Methoden
Falls du VBA nicht verwenden möchtest, kannst du auch Power Query für die Abfrage der API-Daten nutzen. Damit kannst du Parameter aus Zellen einbeziehen, ohne in den VBA-Editor zu gehen. Suche nach "Power-Query Webabfrage mit Parameter" für weitere Informationen.
Praktische Beispiele
Hier ist ein Beispiel, wie du mehrere Werte in einer Reihe anzeigen kannst:
Sub GetVolume()
Dim objHTTP As Object, lngZeile As Long, strAntwort As String, varSplit As Variant, i As Integer
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
With ThisWorkbook.Worksheets("Tabelle1")
For lngZeile = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
objHTTP.Open "GET", "https://api.coincap.io/v2/candles?exchange=" & .Cells(lngZeile, 1), False
objHTTP.Send
strAntwort = objHTTP.ResponseText
If InStr(strAntwort, "volume") Then
varSplit = Split(strAntwort, "volume"":""")
For i = 1 To UBound(varSplit)
.Cells(lngZeile, i + 1) = Left(varSplit(i), InStr(varSplit(i), """") - 1)
Next i
Else
.Cells(lngZeile, 2) = "Server antwortet nicht"
End If
Next lngZeile
End With
End Sub
Tipps für Profis
- Code sauber halten: Verwende sauberes Einrücken, um die Lesbarkeit deines Codes zu verbessern. Dies hilft dir, Fehler schneller zu finden.
- Variable deklarieren: Aktiviere die Option für die Variabledeklaration in den VBA-Einstellungen. Dies verbessert die Codequalität und reduziert Fehler.
- JSON-Parser verwenden: Für komplexe JSON-Datenstrukturen kann ein JSON-Parser für Excel nützlich sein, um die Daten effizient zu verarbeiten.
FAQ: Häufige Fragen
1. Frage
Wie kann ich Parameter für eine Power Query-Abfrage aus Zellen beziehen?
Antwort: In Power Query kannst du Parameter erstellen und diese mit Zellen im Arbeitsblatt verknüpfen. Suche nach "dynamische Webabfrage" für eine detaillierte Anleitung.
2. Frage
Welche Excel-Version benötige ich für die JSON-Abfragen?
Antwort: Die beschriebenen Methoden sollten in Excel 2010 und späteren Versionen funktionieren. Achte darauf, dass die Microsoft XML-Bibliotheken installiert sind.