我正在尝试将一个json api转换为Excel表格。我尝试了不同的解析方法,但目前使用VBA-JSON(类似于VB-JSON但解析速度更快)。到目前为止,我已经将其转换为对象。如果我没错的话,它是一个集合。然而,将对象转换为表格需要大量时间。
以下是我的代码。在我使用的这台旧机器上,HTTP > string使用9秒。解析成对象需要14秒。这些都是可以接受的,但在集合中遍历一列(25k行)的for循环需要30多秒。我需要大约8列从集合中获取数据,这将花费太长时间。在我的i5机器上也需要同样长的时间。
有没有什么方法可以更快地从大型集合对象中填充Excel表格?
我也查看了Rest to Excel library,但是在学习了几个小时后我还是不理解它......再加上我不知道即使我让它工作了,它的性能会如何。
以下是我的代码。在我使用的这台旧机器上,HTTP > string使用9秒。解析成对象需要14秒。这些都是可以接受的,但在集合中遍历一列(25k行)的for循环需要30多秒。我需要大约8列从集合中获取数据,这将花费太长时间。在我的i5机器上也需要同样长的时间。
Dim ItemCount As Integer
Dim itemID() As Long
Function httpresp(URL As String) As String
Dim x As Object: Set x = CreateObject("MSXML2.XMLHTTP")
x.Open "GET", URL, False
x.send
httpresp = x.responseText
End Function
Private Sub btnLoad_Click()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = false
Dim URL As String: URL = "https://www.gw2shinies.com/api/json/item/tp"
Dim DecJSON As Object: Set DecJSON = JsonConverter.ParseJson(httpresp(URL))
ItemCount = DecJSON.Count
ReDim itemID(1 To ItemCount)
Range("A2:S25000").Clear 'clear range
For i = 1 To ItemCount
Cells(i + 1, 1).Value = DecJSON(i)("item_id")
Next i
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
有没有什么方法可以更快地从大型集合对象中填充Excel表格?
我也查看了Rest to Excel library,但是在学习了几个小时后我还是不理解它......再加上我不知道即使我让它工作了,它的性能会如何。
Application.ScreenUpdating
赋值顺序有误?我认为你想先将其设置为False,然后再设置为True。 - Sobigen