Visual Basic with excelを使用して、APIからデータを取得しています。 For-Eachループの繰り返しごとに約100個のAPI呼び出しを実行しています。各繰り返しは1行のデータを埋めます。ExcelのVisual Basic、多くのAPI呼び出しのためにフリーズを止めるには?
問題は、約4〜5行を完了した後、私のExcelがフリーズすることです!
この問題の最適な解決策は、各API呼び出しの間に約3秒の遅延があることだと思います。これにより、APIのレート制限エラーも防止されます。
これが私の現在のコードです -
For Each BidRow In Range("A2:A102")
MyRequest.Open "GET", "https://api.someapi.com/values/" & Range("B" & RowNo)
MyRequest.Send
Set JsonBid = JsonConverter.ParseJson(MyRequest.ResponseText)
Range("D" & RowNo).Value = JsonBid("key")
RowNo = RowNo + 1
Next BidRow
JsonConverterはちょうど別のモジュールです。
とにかく、私はVisual Basicで3000ミリ秒の遅延を行う方法はわかりません.JavaScriptでsettimeout()関数を使用すると非常に簡単です。または、私はここでいくつかの非同期コーディングテクニックを持っているかもしれません。私は今たくさんのことをしようとして失われている!
これを解決する方法はありますか?あなたは「全体」指定した秒数のために一時停止し、このサブを使用することができ
可能な重複[アクセス/エクセルVBA - 時間遅延](HTTPS:/ /stackoverflow.com/questions/30174395/access-excel-vba-time-delay) –
'For Each BidRow In Range(" A2:A102 ")'行の直後に 'DoEvents'を追加しようとしましたか? – sktneer
application.ontimeはあなたが望むことをします –