非常に長いURLリストがあります。そこから、JSONテキストを循環して解析しています。 URLのリストは、最終的に2つの行に分かれており、URLリストの配列を(長いコードの)1行に短縮することによってのみ修正することができるエラーを受け取るため、以下のように構造化されています(urlArray = Array("URL1", "URL2", "URL3", "URL4", "URL5"
)。 (注:この元の構造/構文を修正できると思われる場合は、の7つのURLで動作しますのでご連絡ください)配列の構造:非常に長い配列リスト(VBA)
URLの配列を次の形式に変更しました(上記のurlArray = Array("URL1", "URL2", "URL3", "URL4", "URL5"
と置き換え、 :
urlArray(1) = "URL1"
urlArray(2) = "URL2"
urlArray(3) = "URL3"
urlArray(4) = "URL4"
urlArray(5) = "URL5"
私はこの新しいフォーマットに変更できますか、私は実行時エラーを受け取り '5':
無効なプロシージャ呼び出しまたは引数
ハイライト表示.Open "GET", MyUrls(k)
私の質問は、この新しい構造に変更できますか?または、私の状況(最初の形式では動作しないURLの非常に長いリスト)を考えれば、別の方向に進むべきでしょうか?
全コード変更前:
Option Explicit
Sub getJSON()
Dim sheetCount As Integer, urlArray As Variant
sheetCount = 1
urlArray = Array("URL1", "URL2", "URL3", "URL4", "URL5", "etc.")
Dim MyRequest As Object: Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
Dim MyUrls: MyUrls = urlArray
Dim k As Long
Dim Json As Object
For k = LBound(MyUrls) To UBound(MyUrls)
With MyRequest
.Open "GET", MyUrls(k)
.Send
Set Json = JsonConverter.ParseJson(.ResponseText)
Dim i As Long, p As Object
For i = 1 To Json("prices").Count
Set p = Json("prices")(i)
Sheets("Sheet" & sheetCount).Cells(i, 1) = p("name")
Sheets("Sheet" & sheetCount).Cells(i, 2) = p("cost")("fareType")
Sheets("Sheet" & sheetCount).Cells(i, 9) = p("cost")("base")
Sheets("Sheet" & sheetCount).Cells(i, 10) = p("cost")("perMinute")
Next i
End With
sheetCount = sheetCount + 1
Next k
End Sub
は法的あなたのURLです? (Google) –
@shaiRadoあなたが "合法"とは何を意味するのか分かりませんが、上記の変更前のコードはURLリストが* TOO *になる前に完全に動作しますすなわち、複数の行に及ぶ)。 – Kyle
「URL1」はどのようなものですか?その情報を共有することができれば –