Ich möchte Daten über ein REST API als Tabelle importieren und diesen Import via Makro einer Schaltfläche zuweisen.
Genau der Use-Case, um den es geht, findet sich hier in einem Beispiel:
https://www.codementor.io/@benniejayguevarra/importing-public-web-api-to-excel-no-coding-required-14bzfy4nev
Wenn ich alle Schritte mit dem Macro-Recorder von Excel aufzeichne und dann ablaufen lassen will, erhalte ich den Laufzeitfehler '5' Ungültiger Prozeduraufruf oder ungültiges Argument.
Hier ist der Macro-Code:
' Makro1 Makro
'
'
ActiveWorkbook.Queries.Add Name:= _
"histominute?fsym=BTC&tsym=USD&limit=288&aggregate=5", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Json.Document(Web.Contents(""https://min-api.cryptocompare.com/data/histominute?fsym=BTC&tsym=USD&limit=288&aggregate=5""))," & Chr(13) & "" & Chr(10) & " #""In Tabelle konvertiert"" = Record.ToTable(Quelle)," & Chr(13) & "" & Chr(10) & " Value = #""In Tabelle konvertiert""{7}[Value]," & Chr(13) & "" & Chr(10) & " #""In Tabelle konvertiert1"" = Table.FromList(Value, Splitter.SplitByNothing(), null, null, ExtraValues.Error" & _
")," & Chr(13) & "" & Chr(10) & " #""Erweiterte Column1"" = Table.ExpandRecordColumn(#""In Tabelle konvertiert1"", ""Column1"", {""time"", ""high"", ""low"", ""open"", ""volumefrom"", ""volumeto"", ""close"", ""conversionType"", ""conversionSymbol""}, {""Column1.time"", ""Column1.high"", ""Column1.low"", ""Column1.open"", ""Column1.volumefrom"", ""Column1.volumeto"", ""Column1.close"", ""Col" & _
"umn1.conversionType"", ""Column1.conversionSymbol""})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Erweiterte Column1"""
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""histominute?fsym=BTC&tsym=USD&limit=288&aggregate=5"";Extended" _
, " Properties="""""), Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array( _
"SELECT * FROM [histominute?fsym=BTC&tsym=USD&limit=288&aggregate=5]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = _
"histominute_fsym_BTC_tsym_USD_limit_288_aggregate_5"
.Refresh BackgroundQuery:=False
End With
Sheets("histominute_fsym=BTC&tsym=USD&l").Select
Sheets("histominute_fsym=BTC&tsym=USD&l").Name = "Import"
Application.CommandBars("Queries and Connections").Visible = False
End Sub
Was mache ich falsch bzw. wie muss der Code lauten, damit er das ausführt, was in den manuellen Schritten erfolgreich funktioniert ?
Danke euch im voraus !
|