У меня есть список из 100 000 URL-адресов, которые мне нужно проанализировать с помощью вызова API. Я отсортировал их в списке из 600 + конкатенированных строк, каждый из которых содержит 200 URL-адресов - готов к анализу.Excel VBA: Looped Web Queries
Я написал код, приведенный ниже, чтобы зациклить процесс, помещает возвращаемую информацию о URL-адресах в последнюю строку столбца C по одному за раз. Тем не менее, мой цикл, кажется, сломан, и я не знаю, почему (слишком долго смотрел на него), но я подозреваю, что это ошибка новобранец. После выполнения первых двух конкатенированных строк (400 URL-адресов он начинает переписывать информацию со строки порядка 200, обрабатывая только первую строку.
Код ниже, и любая помощь будет принята с благодарностью. К сожалению, я не могу поделиться URL, что я пытаюсь разобрать, потому что это система уместности построена моими работодателями и не для общественного пользования.
Sub APIDataProcess()
Dim lURLsLastRow As Long
Dim lDataSetLastRow As Long
Dim rngURLDataSet As Range
Dim sURLArray As String
Dim lURLArrayCount As Long
Dim rngArrayCell As Range
lURLsLastRow = Cells(Rows.Count, 1).End(xlUp).Row
lDataSetLastRow = Cells(Rows.Count, 3).End(xlUp).Row
Set rngURLDataSet = Range("A1:A" & lDataSetLastRow)
lURLArrayCount = Range("B1").Value ' placeholder for count increments
sURLArray = Range("A" & lsURLArrayCount).Value
For Each rngArrayCell In rngURLDataSet
If lsURLArrayCount <= lURLsLastRow Then
With ActiveSheet.QueryTables.Add(Connection:="URL;http://test.test.org/test.php", Destination:=Range("C" & lDataSetLastRow))
.PostText = "urls=" & sURLArray
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
lURLArrayCount = lURLArrayCount + 1
Range("B1").Value = lURLArrayCount
Application.Wait Now + TimeValue("00:01:00")
Else
Exit Sub
End If
Next rngArrayCell
End Sub