Мне нравится уже дан ответ (+). Вы также можете загружать массивы в элементы.
For Each post In Html.getElementsByClassName("info")
shopName = post.querySelector(".business-name span").innerText
address = post.querySelector(".adr").innerText
phone = post.querySelector(".phones").innerText
idic(post) = Array(shopName, address, phone)
Next post
For Each key In idic.keys
R = R + 1: ActiveSheet.Cells(R, 1) = idic(key)(0)
ActiveSheet.Cells(R, 2) = idic(key)(1)
ActiveSheet.Cells(R, 3) = idic(key)(2)
Next key
Вы также можете работать только с массивами, которые должны быть быстрыми.
Dim list As Object, arr(), post As Object, index As Long
Set list = Html.getElementsByClassName("info")
ReDim arr(1 To list.Length)
For Each post In list
index = index + 1
shopName = post.querySelector(".business-name span").innerText
address = post.querySelector(".adr").innerText
phone = post.querySelector(".phones").innerText
arr(index) = Array(shopName, address, phone)
Next
For index = LBound(arr) To UBound(arr)
ActiveSheet.Cells(index, 1).Resize(1, UBound(arr(index))) = arr(index)
Next
Однако я бы хотел загрузить html.getElementsByClassName("info")
в переменную и работать с этим в обоих случаях.
Кроме того, данные присутствуют в строке json внутри тега script, поэтому при использовании анализатора json, например, jsonconverter.bas Вы также можете сделать:
Dim json As Object, item As Object, results(), i As Long
Set json = JsonConverter.ParseJson(Html.querySelectorAll("script[type='application/ld+json']").item(1).innerHTML)
ReDim results(1 To json.Count)
i = 1
For Each item In json
results(i) = Array(item("name"), Join$(item("address").Items, " ,"), item("telephone"))
i = i + 1
Next